继承的属性和MetadataType似乎不适用于ASP.NET MVC 2中的客户端验证。
我们的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; }
}
如您所见,里面没有什么奇特的东西或奇怪的东西……可以解决吗? 它是ASP.NET MVC 2中的错误吗?
最佳答案
根据Microsoft官方的说法,这是ASP.NET MVC 2 中的错误。我得到了下面的链接,尽管情况并不完全相同,但这似乎是相同的问题。据我所知,它与继承的属性和DataAnnotations模型元数据提供程序有关。该链接表示,他们将尝试解决ASP.NET MVC 3中的问题。
Asp.net MVC 2 RC2: the client side validation does not work with overridden properties