我有一个模型:菜单是subClass of 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")
}为什么会发生这种事?
发布于 2013-10-18 13:18:18
这是我向微软报告的一个bug:http://connect.microsoft.com/VisualStudio/feedback/details/636341/modelmetadata-fromlambdaexpression-has-changed-in-asp-net-mvc-3-rtm
基本上,编辑器和显示模板只查找模型的确切当前类型的属性,而不是父类中的属性。
他们的官方答覆是:
你好达林(和其他人), 这是我们在ASP.NET MVC 3中引入的一个有意的改变,是在对继承的模型提供更好的支持还是对实现接口的模型提供更好的支持之间进行权衡的结果。最后,我们倾向于采用继承的模型,从我们的经验来看,这是一种更常见的方法。 根本的问题是,当接口由类实现时,类并不真正继承接口的任何成员。这里的关键是,因为它没有继承接口的成员,所以它也不会继承那些成员的元数据。 谢谢,ASP.NET团队
因此,基本上,他们不认为它是一个错误,但它是故意的。
https://stackoverflow.com/questions/19450484
复制相似问题