MVC视图使用复合模型报错:表达式树不能包含动态操作
解决ASP.NET MVC复合模型视图报错:An expression tree may not contain a dynamic operation
错误原因
你创建的PatientandTest复合模型里,PatientTbl和PatientTestTbl仅声明了属性类型,未初始化实例。视图通过asp-for等Tag Helper访问子属性时,子对象为null会被编译器识别为动态类型,而表达式树不允许包含动态操作,因此触发该错误。
修复方案
方案一:在复合模型构造函数中初始化子模型
修改PatientandTest类,添加构造函数创建子模型实例:
namespace Laboratory_Management.Models { public class PatientandTest { public PatientTbl PatientTbl { get; set; } public PatientTestTbl PatientTestTbl { get; set; } public PatientandTest() { PatientTbl = new PatientTbl(); PatientTestTbl = new PatientTestTbl(); } } }
方案二:在控制器Action中初始化子属性
若不想修改模型类,可在返回视图的控制器方法里手动初始化子模型:
public IActionResult Index1() { var model = new PatientandTest { PatientTbl = new PatientTbl(), PatientTestTbl = new PatientTestTbl() }; return View(model); }
完成上述任一修改后,视图中的asp-for="PatientTbl.PName"就能正确识别强类型属性,错误会被解决。
内容的提问来源于stack exchange,提问作者Qasim Asghar
相关产品推荐
相关产品推荐

