@ HTML.editorForModel()不为Model创建编辑界面

时间:2013-10-18 13:07:02

标签: asp.net-mvc-4 editorformodel

我有一个模特: Menu是menuComponent的子类

和菜单组件有两个属性:名称和描述都是字符串

我创建了一个编辑视图,并尝试使用editorForModel()创建编辑字段。 但它不会为它创建任何编辑字段。

@using (Html.BeginForm())
{ 
    @Html.EditorForModel();
    <input type="submit" value="Save" /> 
    @Html.ActionLink("Cancel and return to List", "Index") 
}

我必须使用@ HTML.EditorFor()来创建编辑文件

 @using (Html.BeginForm())
    { 
        @Html.EditorFor(m => m.Name);
        @Html.EditorFor(m => m.Description);
        <input type="submit" value="Save" /> 
        @Html.ActionLink("Cancel and return to List", "Index") 
    }

为什么会这样?

1 个答案:

答案 0 :(得分:2)

这是我向微软报告的一个错误:http://connect.microsoft.com/VisualStudio/feedback/details/636341/modelmetadata-fromlambdaexpression-has-changed-in-asp-net-mvc-3-rtm

基本上,编辑器和显示模板仅查找模型当前类型的属性,而不是父类。

他们的正式答案是:

  

嗨Darin(和其他人),

     

这是我们向ASP.NET MVC 3引入的一个故意改变   是在更好地支持之间进行权衡的结果   继承模型或更好地支持实现的模型   接口。我们最终赞成从我们这里继承的模型   经验是一种更常见的方法。

     

基本问题是当接口由a实现时   类没有真正继承任何成员的类   界面。这里的关键是因为它没有继承   接口的成员,它也不会继承元数据   那些成员。

     

谢谢,ASP.NET团队

所以基本上他们不认为它是一个bug,但它是设计的。