2011-05-24 68 views
0

我有一组来自应用程序的另一个无法修改的模型类。这些没有我需要的验证属性(例如RemoteAttribute)。我如何去添加这些?我无法将[MetadataTypeAttribute]添加到模型。ASP.NET MVC3 - 不可变模型 - 添加验证属性

举例说明:

//in Models.dll 
    //remember: I can't modify this 
    public class Product 
    { 
     string Name { get; set; } 
    } 

    //in Web.dll 
    public class ProductController 
    { 
     // GET: /Product/ 
     public ActionResult Index() 
     { 
      return View(new Product()); 
     } 
    } 

    //what i need: 
    public class ProductMetadata 
    { 
     [Remote("Foo", "Bar")] 
     [RegularExpression] 
     string Name { get; set; } 
    } 

这是在任何可能的方式,而不产生排序的ViewModel类的东西?

+2

Unmutable?我认为你的意思是[不可变](http://www.merriam-webster.com/dictionary/immutable)。 – 2011-05-24 13:44:31

回答

4

而无需创建视图模型类

假设一个正确设计ASP.NET MVC应用程序应该总是使用视图模型,你只能从引进沾光这是在任何可能的方式。除了解决这个特定的问题和数百个潜在的其他问题,你将有一个适当架构的ASP.NET MVC应用程序:-)

将你的模型绑定到控制器(这是什么RemoteAttribute会做)似乎是一个可怕的这个模型在其他应用程序中的可重用性。

+0

我不确定'只有好处'。这会增加复杂性(映射视图模型<->模型),因此在特定情况下会以负面方式影响可维护性。但是我看到了这些优势,这似乎是当时的出路。 – Bas 2011-05-24 13:22:35