Html.EditorFor抛出属性未找到错误

时间:2011-03-05 15:38:28

标签: c# asp.net-mvc-3

我从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) %>

我有什么遗失的吗?

2 个答案:

答案 0 :(得分:1)

这听起来像是EditorFor的限制。也许它不够聪明,无法检查已实现的属性接口。

答案 1 :(得分:0)

找到解决方案:

我在IAutomobile界面上重新实现了'Name'属性:

public interface IAutomobile : IDbObject { 
  new string Name { get; set; }
  string VIN { get; set; }
}

我没有对我的具体类进行任何更改,并且EditorFor方法能够使用Name属性。