【问题标题】:Which is the way to add MVC behavior to existing classes?将 MVC 行为添加到现有类的方法是什么?
【发布时间】:2011-04-14 07:31:50
【问题描述】:

我有一个 Windows 窗体项目,我想迁移到使用 ASP.NET MVC2 的 Web 应用程序。

在这个项目中,我有一些 POCO 类,如本例所示,它们是类库的一部分,我想与二进制引用一起使用

public class Person
{
    public int PersonID { get; set; }

    public string Name { get; set; }

    public DateTime BornDate { get; set; }

    ...
}

有没有办法在我的 Web MVC 项目中使用这些类并添加,例如验证属性而不修改原始程序集?

感谢您的帮助

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-2 poco


    【解决方案1】:

    你可以看看FluentValidation。它与ASP.NET MVC 完美集成,允许您在不修改 POCO 对象的情况下不显眼地添加验证规则。

    【讨论】:

      【解决方案2】:

      您可以使用部分类添加元信息,如验证

      namespace xxx.Data.yyy
      {
          [MetadataType(typeof(Posting_Validation))]
          public partial class Posting { 
          }
      
          public class Posting_Validation {
              [Required(ErrorMessage = "Need title")]
              [StringLength(50, ErrorMessage = "Must be under 50 characters")]
              [DisplayName("Title")]
              public string Title { get; set; }
      
              [Display(AutoGenerateField = false)]
              [HiddenInput(DisplayValue=false)]
              public int PostingId { get; set; }
      
              [UIHint("tiny_mce")]
              public string HtmlContent { get; set; }
          }
      }
      

      【讨论】:

      • MetadataType 属性应该去原来的 POCO 类?
      • 嗯...这超出了我的范围,因为它破坏了与我应该继续支持的窗口窗体项目的兼容性。这就是我所说的“不修改原始程序集”的方式......无论如何谢谢;)
      • 您不必修改原来的程序集!你只是在你自己的代码中扩展它!
      • 对不起,我不明白。如果我必须用属性装饰原始类,为什么您说我不必修改原始程序集?你的意思是使用部分类修饰符吗?如果原始类没有部分修饰符,这将如何工作?
      猜你喜欢
      • 2014-11-06
      • 2011-03-09
      • 2017-07-22
      • 2014-07-30
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 2021-10-12
      • 2017-01-22
      相关资源
      最近更新 更多