2009-08-20 31 views
1

看起來好像ASP.NET MVC 2 Preview 1 was just released這意味着模型方面的工作方式可能略有不同。 DataAnnotation功能允許對其模型中的屬性進行驗證是好的,但我不確定將它放在哪裏。關於管理模型的建議[ASP.NET MVC]

我手動創建我的模型作爲Steve Sanderson's book on ASP.NET MVC建議,這適合我。但是,對於來自視圖頁面的POST數據,我應該有單獨的模型嗎?所以說,我是在創造產品的項目,我的主要模式可能是這樣的:

public class Product { 
    [Column(IsPrimaryKey = true, IsDbGenerated = true)] public int ProductID { get; set; } 
    [Column] public string ProductName { get; set; } 
    [Column] public string ProductDescription { get; set; } 
    [Column] public double ProductCost { get; set; } 
} 

現在,斯科特的例子給了我們DataAnnotations所以你可以做:

public class Product { 
    public int? ProductID { get; set; } 

    [Required(ErrorMessage="Must enter a product name!")] 
    public string ProductName { get; set; } 

    public string ProductDescription { get; set; } 

    [Range(1, 500, ErrorMessage="Too expensive!")] 
    public double ProductCost { get; set; } 
} 

後者的例子就是有一個可爲空ProductID場因爲它將是數據庫中的自動增量字段。現在,這兩個例子都將包含在類中,並且可能具有相同的名稱。就我個人而言,我認爲我的主要模型不應該在其中包含這些註釋,因爲它們不應該是他們驗證數據的責任。那麼我是否應該將具有不同角色的類與單獨的名稱空間相關聯?

回答

1

在我看來驗證的模型的關注的一部分 - 讓他們在一起。

1

我個人有一個被髮送到視圖,併發布到控制器,通常他們的名字像ProductEditModel的單一模式。然後驗證並將其轉換爲控制器中的我的產品類型。

此視圖模型通常被包裹在對心不是去在頁面例如生命週期更改視圖中的所有數據某種類型的演示模型。菜單項,用戶名等

檢查此sreencast出http://serialseb.blogspot.com/2009/05/my-mvc-best-practices-talk.html這將解釋它更好,是一個非常好的方法mvc dev