如何构建GENERIC ASP。 NET MVC CRUD VIEW使用对象作为模型

时间:2014-08-17 12:34:04

标签: c# asp.net asp.net-mvc crud

我想为任何模型创建MVC通用CRUD视图...... 让我们有2个模型

public class MyObject1 {
    Display(Name = "Attribute 11", ShortName = "A11")]
    public String attribute11 { get; set; }
    Display(Name = "Attribute 12", ShortName = "A12")]
    public String attribute12 { get; set; }
}

public class MyObject2 {
    Display(Name = "Attribute 21", ShortName = "A21")]
    public String attribute21 { get; set; }
    Display(Name = "Attribute 22", ShortName = "A22")]
    public String attribute21 { get; set; }
}

我尝试构建一个独立于两个模型的Create视图,第一个尝试是迭代模型的公共属性(MyObject1或MyObject2)并尝试从中重建视图。

@model Object
@{
    Type myType = Model.GetType();
    System.Reflection.PropertyInfo[] myProps = myType.GetProperties();
}
@using (Html.BeginForm()) {
    foreach (var f in myProps)
    {
        <div>
            @Html.LabelFor(o => f.Name)
            <div>
                @Html.EditorFor(o => f.Name)
                @Html.ValidationMessageFor(o => f.Name)
            </div>
        </div>
    }
    <div>
        <input type="submit" value="Create"/>
    </div>
}

结果

  • 标签显示字符串&#34; name&#34; (!),我想显示相应的DisplayName元数据
  • 由于f.Name,编辑器显示属性名称(attribute11,属性12,...)。我无法显示值......
  • 我还没有检查过ValidationMessage

任何想法如何管理?

由于

1 个答案:

答案 0 :(得分:0)

只需使用@Html.EditorFor(model=>model)您的视图即可:

@model Object
@using (Html.BeginForm()) {
    <div>
            @Html.EditorFor(model => model)
    </div>
    <div>
        <input type="submit" value="Create"/>
    </div>
}