ASP.NET Core中使用Input Tag Helper出现‘An expression tree may not contain a dynamic operation’错误求助
ASP.NET Core中使用Input Tag Helper出现‘An expression tree may not contain a dynamic operation’错误求助
嘿,我来帮你搞定这个报错问题~
这个错误的核心原因很明确:你的视图没有绑定强类型模型,导致@Model变成了动态(dynamic)类型,而Input Tag Helper的asp-for属性需要基于强类型的表达式树来生成对应的表单字段名、ID等信息,动态类型没法生成合法的表达式树,所以就抛出这个错误了。
给你几个具体的解决步骤:
- 第一步,确认你的
Person模型是强类型的实体类,比如类似这样的定义:
public class Person { public string Firstname { get; set; } // 这里可以添加其他需要的属性,比如Lastname、Age等 }
- 第二步,在你的视图文件顶部,添加强类型模型的声明(替换掉原来可能缺失的@model指令):
@model 你的命名空间.Person
记得把“你的命名空间”换成Person类实际所在的命名空间哦,比如如果Person类在YourProject.Models下,就写@model YourProject.Models.Person。
- 第三步,优化你的input标签:你手动写的
value="@Model.Firstname"其实可以删掉,因为Input Tag Helper会自动根据asp-for绑定的模型属性值填充输入框内容,手动写value反而可能和Tag Helper的自动绑定冲突。修改后的input标签应该是:
<input class="form-control" asp-for="Firstname" />
做完这些操作后,重新编译运行项目,这个“表达式树不能包含动态操作”的错误应该就消失啦~
备注:内容来源于stack exchange,提问作者Elvis aldo
相关产品推荐
相关产品推荐

