我被这个问题困住了,我不确定这是否是我对MVC框架,.NET框架或什么的理解不够。但是,在这里可以看到来自任何角落的一些解释。模型绑定找不到的继承接口属性
我在做什么:使用ASP.NET MVC3模型绑定在视图中呈现HTML控件。具体来说,我试图绑定到一个接口而不是一个具体的类。
错误:一个ArgumentException“无法找到属性[blah]。”在页面加载期间抛出。
代码:
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)
当我尝试加载的观点,一个ArgumentException从呼叫指出Id属性不能被抛向EditorFor()找到。但是,如果我反而绑定到具体类,绑定工作正常。
所以没有人知道为什么EditorFor()将无法解析基接口的继承属性?
尝试使用抽象类。 – wnascimento
这就是我开始做的:编写实现我的接口的抽象类。然后我的具体类可以继承和重写摘要,并且(当前)我也有我的视图绑定到摘要。不知道绑定到抽象基类是否会对长期运行的视图起作用 - 下面的Kaleb建议为绑定实现ViewModel类。我现在不愿意开始这条路,但我最终可能会在那里结束。 –
Kaleb的建议非常好,Automapper/ViewModels是一个不错的选择。 – wnascimento