ASP.NET MVC 2中的MetadataType和客户端验证

Kri*_*Ahl 5 validation asp.net-mvc modelmetadata

ASP.NET MVC 2中的继承属性和MetadataType似乎不适用于客户端验证.

我们的MetadataTypes验证在服务器上按预期工作,但由于某种原因,它不会为它生成适当的客户端脚本.对于在PersonView上设置了DataAnnotations属性的属性,客户端验证会按预期启动,因此我知道客户端验证是活动的并且它可以正常工作.有谁知道它是否或如何修复?

这是我们拥有的:

public abstract class PersonView
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
    [Required] public string PhoneNumber { get; set; }
    public string AddressLine1 { get; set; }
    public string AddressLine2 { get; set; }
    public string AddressZipCode { get; set; }
    public string AddressCity { get; set; }
    public string AddressCountry { get; set; }
}

[MetadataType(typeof(CustomerViewMetaData))]
public class CustomerView : PersonView {}

[MetadataType(typeof(GuestViewMetaData))]
public class GuestView : PersonView {}

public class GuestViewMetaData
{
    [Required(ErrorMessage = "The guests firstname is required")] public string FirstName { get; set; }
    [Required(ErrorMessage = "The guests lastname is required")] public string LastName { get; set; }
}

public class CustomerViewMetaData
{
    [Required(ErrorMessage = "The customers firstname is required")] public string FirstName { get; set; }
    [Required(ErrorMessage = "The customers lastname is required")] public string LastName { get; set; }
    [Required(ErrorMessage = "The customers emails is required")] public string Email { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,那里没什么奇特或奇怪的东西......可以修复吗?它是ASP.NET MVC 2中的错误吗?

Kri*_*Ahl 2

据 Microsoft 官员称,这是 ASP.NET MVC 2 中的一个错误。我收到了下面的链接,虽然场景不完全相同,但似乎是同一个问题。据我所知,它与继承属性和 DataAnnotations 模型元数据提供程序有关。该链接表示他们将尝试修复 ASP.NET MVC 3 中的问题。

Asp.net MVC 2 RC2:客户端验证不适用于覆盖的属性