基于从Asp.Net MVC3中的DataBase返回的Fields构建动态视图

时间:2014-04-21 21:21:02

标签: c# asp.net-mvc asp.net-mvc-3 razor

我想根据从Database返回的字段在运行时呈现视图。在设计原型/方法时应该理解任何帮助

我有以下型号,

public class DynamicFields
{
    public string propertyName { get; set; }
    public string propertyType { get; set; }
} 

在Controller中,它将是List<DynamicFields>

因此,基于propertyType,我必须像TextBox / DateTime

一样呈现控件

1 个答案:

答案 0 :(得分:1)

您可以为propertyType

的每个值创建EditorTemplates

_textInput.cshtml(假设textInput是propertyType的可能值)

@model DynamicFields
@Html.TextBoxFor(item => Model.propertyName)

_dateTimeInput.cshtml(假设dateTimeInput是propertyType的可能值)

@model DynamicFields
@Html.TextBoxFor(item => Model.propertyName, new {class = "datetime"})

观点:

@model IEnumerable<DynamicFields>

@foreach(var field in Model){
    @Html.LabelFor(model => field.propertyName)
    @Html.EditorFor(model => field.propertyName, field.propertyType) @*tell razor which template to use *@

}

可在此处找到更多信息: http://msdn.microsoft.com/en-us/library/ee407414(v=vs.118).aspx

根据这个答案的知识考虑foreach循环,更新了我的答案:https://stackoverflow.com/a/1987585/690178