2011-03-05 107 views
0

我从MVC3 webforms视图中看到一个奇怪的错误,它让我难堪。Html.EditorFor throws属性找不到错误

设置: 我有两个接口定义:

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无法b e找到了。

但是,如果我注释掉这个说法,我对VIN EditorFor继续正常运行:

<%= Html.EditorFor(a => a.VIN) %> 

有我丢失的东西?

回答

0

发现的解决方案:

我重新实现IAutomobile界面上的“名称”属性:

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

我做任何更改我的具体类和EditorFor方法能够一起工作Name属性。

+0

我有一种感觉,这可能会导致在使用对象作为IDbObject时出现问题。 – 2011-03-05 15:51:11

+0

你可能是对的......我会让你知道;) – 2011-03-05 15:54:20

1

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

+0

它看起来好像没有检查实现的接口。我想我找到了我的解决方案 – 2011-03-05 15:47:01

+0

实际上,这个错误不是来自EditorFor,而是来自AssociatedMetadataProvider – Linkgoron 2011-03-05 15:58:28

+0

嗯,我实际上认为这可能会计算AssociatedMetadataTypeTypeDescriptionProvider类的错误。 – Linkgoron 2011-03-05 16:12:00

相关问题