模型绑定没有找到继承的接口属性
本文关键字:继承 接口 属性 绑定 模型 | 更新日期: 2023-09-27 18:13:26
我被这个问题难住了,我不确定这是我对MVC框架,. net框架缺乏理解,还是什么。但如果能从任何角度给出解释,我们都会很感激的。
我想做的是:使用ASP。NET mvc模型绑定在视图中呈现HTML控件。具体来说,我试图绑定到一个接口,而不是一个具体的类。
页面加载时抛出ArgumentException "The property [blah] could not be found."
代码:
Interface IFoundation
{
int Id { get; set; }
}
Interface IChild: IFoundation
{
string Name { get; set; }
}
Class Concrete: IChild
{
int Id { get; set; }
string Name { get; set; }
}
视图:@model IChild
@Html.EditorFor(x => x.Id)
当我尝试加载视图时,从对EditorFor()的调用中抛出一个ArgumentException,指出无法找到Id属性。但是,如果我将绑定到具体类,则绑定工作正常。
那么,有没有人知道为什么EditorFor()不能从基接口解析继承的属性?
在基类/抽象类和具体类中,存在属性、方法等。另一方面,接口是实现的。CLR规定的规则。
请参阅这篇解释ModelBinding和这种区别(Class x Interface)上的关系的文章。
http://bradwilson.typepad.com/blog/2011/08/interface-attributes-class-attributes.html我想这就是你的答案。