簡體   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