繁体   English   中英

在ASP .NET MVC中动态生成@ Html.EditorFor的表达式

[英]Dynamically Generate the Expression for @Html.EditorFor in ASP .NET MVC

我有一个完全可配置的实体框架模型。 通过可配置,我的意思是用户可以选择哪些字段是可见的还是不可见的,是否是必填字段以及是否是只读的。 我通过重写DataAnnotationsModelMetadataProvider类应用了配置,现在的问题是将模型与Html.EditorFor Helper一起使用。

我不想遍历每个属性并添加Html.EditorFor如下所示

@foreach(var field in fieldConfig)
{
    Html.EditorFor(...Dynamicaly Created Expression...)
}

编辑:fieldConfig是ConfigTable中的列表,它包含诸如FieldName,IsRequred,IsReadOnly,OrderNo,Type之类的字段

先感谢您。

尝试

@foreach(var field in fieldConfig)
{
Html.EditorFor(model=> field)
}

上次我使用它有效

如果您希望“动态表达式”为字符串,则可以使用

Html.Editor("MyProperty")

甚至

Html.Editor("MyProperty.AnotherProperty.Name")

代替。

它需要一个字符串表达式,并且与EditorFor的工作方式相同,但不是类型安全的。

或者您不想成为类型安全的对象,而是学习如何创建表达式树: http : //weblogs.asp.net/dixin/archive/2009/11/29/understanding-csharp-3-0-features-6-lambda- expression.aspx

也许您可以尝试类似的操作,通过使用反射可以获取类的属性。 我没有尝试过,因此您可以检查一下您的身边:

var properties = Model.GetType().GetProperties();


foreach (var field in properties)
{
    Html.EditorFor(model => field.GetValue(Model, null));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM