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



我有一个模型:菜单是菜单组件的子类

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

我创建了一个编辑视图,并尝试使用 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") 
    }

为什么会这样?

这是我

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

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

他们的官方回答是这样的:

嗨达林(和其他人),

这是我们在MVC 3中引入 ASP.NET 刻意更改 是在拥有更好的支持之间进行权衡的结果 继承的模型或对实现的模型的更好支持 接口。我们最终偏爱继承的模型,这些模型来自我们的 经验是一种更常见的方法。

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

谢谢,ASP.NET 团队

所以基本上他们不认为这是一个错误,但这是设计使然。

相关内容

  • 没有找到相关文章

最新更新