在 C# 中将 MetadataType 添加到派生类
Posted
技术标签:
【中文标题】在 C# 中将 MetadataType 添加到派生类【英文标题】:Add MetadataType to derived class in C# 【发布时间】:2011-08-22 06:00:50 【问题描述】:我有一个类叫
public partial class Contact
public int Id get; set;
public string Title get; set;
public string FirstName get; set;
public string LastName get; set;
我有另一个班级叫
public partial class Person : Contact
public string Occupation get; set;
public string Country get; set;
我有第三个名为 Person 的类,它被声明为 Partial,第四个名为 PersonMetaData 的类用于声明注释
[MetadataType(typeof(PersonMetadata))]
public partial class Person : Contact
public class PersonMetadata
[StringLength(20, ErrorMessageResourceName = "FirstNameLength",
ErrorMessageResourceType = typeof(BasicErrors))]
[Required(ErrorMessageResourceName = "FirstNameRequired",
ErrorMessageResourceType = typeof(BasicErrors))]
public string FirstName get; set;
[StringLength(20, ErrorMessageResourceName = "LastNameLength",
ErrorMessageResourceType = typeof(BasicErrors))]
[Required(ErrorMessageResourceName = "LastNameRequired", ErrorMessageResourceType
= typeof(BasicErrors))]
public string LastName get; set;
在我的 MVC 视图中,我制作了一个基于 Person 的强类型页面?问题是,必需和字符串长度验证不起作用。继承类并创建分部类以引用 MetadataType 时会出现此问题。
如果没有继承,则调用 Partial Class 时 MetadataType 可以正常工作。
将 MetadataType 用于派生类并与它一起使用时的任何解决方案?
谢谢
【问题讨论】:
还是没有接受答案。 【参考方案1】:这是 MVC2 中的问题。但是它在 MVC3 中有效。请参阅以下文章:
http://connect.microsoft.com/VisualStudio/feedback/details/538360/asp-net-mvc-2-rc2-the-client-side-validation-does-not-work-with-overridden-properties
【讨论】:
【参考方案2】:删除该部分并尝试以下操作:
[MetadataType(typeof(PersonMetadata))]
public partial class Person : Contact
public string Occupation get; set;
public string Country get; set;
【讨论】:
以上是关于在 C# 中将 MetadataType 添加到派生类的主要内容,如果未能解决你的问题,请参考以下文章
如何在 C# 中将更新参数添加到 SQLDataSource