You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 13:25:23