动态Lambda在Html.LabelFor中

时间:2012-03-04 23:28:52

标签: asp.net-mvc-3 razor lambda

我正在尝试使用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的原因是可以访问这些数据注释。

1 个答案:

答案 0 :(得分:3)

这是不可能的。您不能使用lambda表达式,也不能使用具有动态值的强类型助手。您将不得不使用这些帮助程序的弱类型版本:

@model dynamic
@{
    string property = "FirstName";
}

@Html.Label("property")

是的,一旦你停止使用强类型视图模型,就必须改变许多事情和习惯。

相关问题