Asp.net mvc 4 @editorForModel()不';t为模型创建编辑界面

Asp.net mvc 4 @editorForModel()不';t为模型创建编辑界面,asp.net-mvc-4,editorformodel,Asp.net Mvc 4,Editorformodel,我有一个模型: 菜单是menuComponent的子类 菜单组件有两个属性:名称和描述都是字符串 我已经创建了一个编辑视图,并尝试使用editorForModel()创建编辑字段。 但它不会为它创建任何编辑字段 @using (Html.BeginForm()) { @Html.EditorForModel(); <input type="submit" value="Save" /> @Html.ActionLink("Cancel and return

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

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

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

@using (Html.BeginForm())
{ 
    @Html.EditorForModel();
    <input type="submit" value="Save" /> 
    @Html.ActionLink("Cancel and return to List", "Index") 
}
@使用(Html.BeginForm())
{ 
@Html.EditorForModel();
@ActionLink(“取消并返回列表”、“索引”)
}
我必须使用@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") 
    }
@使用(Html.BeginForm())
{ 
@EditorFor(m=>m.Name);
@EditorFor(m=>m.Description);
@ActionLink(“取消并返回列表”、“索引”)
}

为什么会发生这种情况?

这是我向Microsoft报告的一个错误:

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

他们的官方答案是:

嗨,达林(和其他人)

这是我们在ASP.NET MVC 3中引入的经过深思熟虑的更改 这是在获得更好的支持和支持之间进行权衡的结果吗 继承模型或更好地支持实现 接口。我们最终倾向于继承的模型,这是从我们的 经验是一种更常见的方法

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

谢谢,ASP.NET团队


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

接口的成员是什么意思?我猜这是一个在你的模型实现的接口中定义的属性。为什么它们意味着我的类不能继承这些属性?因为我可以在我的课堂上实现它们!!它们意味着编辑器和显示帮助程序不考虑在接口中声明的属性(类实现时没有任何问题)。这是你正在观察的行为。