我正在尝试使用razor引擎中的html帮助器为动态属性创建标签。视图模型不强类型。我对lambda表达式的了解不是很强,我不确定如何生成一个适合这种情况的动态表达式。
public class someModel<TEntity> where TEntity : class
{
public TEntity Entity { get; set; }
}
<击> ---- 击>
@model dynamic
@{
string property = "FirstName";
}
@Html.LabelFor( m => m.Entity.property )
会抛出错误An expression tree may not contain a dynamic operation
。
我研究制作动态表达树,但不确定这是否过度或必要。如何使用字符串访问Entity
的属性?
实体可以是许多不同类型的类。这些类具有完全定义的数据注释,例如[Display(Name = "Some Name")]
,我尝试使用LabelFor的原因是可以访问这些数据注释。
答案 0 :(得分:3)
这是不可能的。您不能使用lambda表达式,也不能使用具有动态值的强类型助手。您将不得不使用这些帮助程序的弱类型版本:
@model dynamic
@{
string property = "FirstName";
}
@Html.Label("property")
是的,一旦你停止使用强类型视图模型,就必须改变许多事情和习惯。