在 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

在 C# 中将音频流添加到视频流

在C#中将逗号添加到整数[重复]

如何在 C# 中将“”添加到 string.Format [重复]

如何在 C# 中将用户输入添加到二维数组

如何在后面的c#代码中将div添加到容器div