我从MVC3 webforms视图中得到一个奇怪的错误,这让我很难过。
设定: 我定义了两个接口:
public interface IDbObject {
int Id { get; set; }
string Name { get; set; }
}
public interface IAutomobile : IDbObject {
string VIN { get; set; }
}
public class Automobile : IAutomobile {
public int Id { get; set; }
public string Name { get; set; }
public string VIN { get; set; }
}
我的观点是强类型视图:System.Web.Mvc.ViewPage<IAutomobile>
和我的控制器
当我尝试在Name属性
上使用EditorFor时<%= Html.EditorFor(a => a.Name) %>
我遇到异常: System.ArgumentException:找不到属性IAutomobile.Name。
但是,如果我注释掉这个陈述,我在VIN上的EditorFor继续正常运行:
<%= Html.EditorFor(a => a.VIN) %>
我有什么遗失的吗?
答案 0 :(得分:1)
这听起来像是EditorFor
的限制。也许它不够聪明,无法检查已实现的属性接口。
答案 1 :(得分:0)
找到解决方案:
我在IAutomobile界面上重新实现了'Name'属性:
public interface IAutomobile : IDbObject {
new string Name { get; set; }
string VIN { get; set; }
}
我没有对我的具体类进行任何更改,并且EditorFor方法能够使用Name属性。