Nat*_*edy 7 .net c# razor asp.net-mvc-3
我对这个问题感到困惑,我不确定这是不是我对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; }
}
Run Code Online (Sandbox Code Playgroud)
风景:
@model IChild
@Html.EditorFor(x => x.Id)
Run Code Online (Sandbox Code Playgroud)
当我尝试加载视图时,从对EditorFor()的调用抛出ArgumentException,指出无法找到Id属性.但是,如果我改为绑定到Concrete类,绑定工作正常.
那么有谁知道为什么EditorFor()无法从基接口解析继承的属性?
在基础/抽象和具体类中,存在属性,方法等.另一方面,实现了接口.CLR强加的规则.
请参阅此文章,了解有关此差异的ModelBinding和关系(Class x Interface).
http://bradwilson.typepad.com/blog/2011/08/interface-attributes-class-attributes.html
我认为这是你的答案.
归档时间: |
|
查看次数: |
2340 次 |
最近记录: |