2011-05-24 66 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