2013-07-02 127 views
0

我有一個模型和一個控制器的多個視圖。 該模型有一些必填字段,但對於特定視圖,我需要忽略2個特定字段的驗證。 有什麼方法可以忽略這兩個字段的驗證?多視圖相同模型[MVC 3]

我正在使用asp.net MVC3。

型號代碼示例:

[Required(ErrorMessage = "Campul strada este obligatoriu")] 
    public string Strada { get; set; } 

[DisplayName("Numar strada")] 
[Required(ErrorMessage = "Campul strada numar este obligatoriu")] 
public string NrStrada { get; set; } 

對於9/10的觀點是好的,但對於1個視圖我不希望被該電源線。

+0

請更具體!哪種編程語言,您使用的是哪個框架/庫?考慮提供一些示例代碼。人們只能像你問的那樣幫助你。 – tike

+1

您應該考慮使用ViewModels代替。發佈一些代碼,以便我們可以看到你在做什麼。 – mezmi

+0

對於那個視圖,而不是使用Html.EditorFor/Html.TextBoxFor,你可以使用Html.TextBox助手嘗試,我不認爲輸出HTML驗證所需的標記,所以你應該通過客戶端這方面的驗證。服務器端,您將需要檢查模型狀態並刪除這兩個字段的錯誤 – Slicksim

回答

0

當發生這樣的問題時,我通常會創建不同的視圖模型。每個都有自己的驗證邏輯。這樣做沒有任何問題。

以下是與您的代碼無關的示例,您可以相應地調整您的代碼。

例如,創建客戶我會創建一個客戶視圖模型,而對於編輯客戶,我將擁有一個編輯客戶視圖模型。每個都有不同的驗證集。創建客戶只需要一個名字和一個姓氏。編輯客戶需要更新客戶記錄的名字,姓氏和員工編號。添加新客戶時不需要員工編號更新程序。

以下是可能創造客戶視圖模型:

public class CreateCustomerViewModel 
{ 
    [Required(ErrorMessage = "Required")] 
    public string FirstName { get; set; } 

    [Required(ErrorMessage = "Required")] 
    public string LastName { get; set; } 
} 

這裏是一個可能的編輯客戶視圖模型:

public class EditCustomerViewModel 
{ 
    [Required(ErrorMessage = "Required")] 
    public string FirstName { get; set; } 

    [Required(ErrorMessage = "Required")] 
    public string LastName { get; set; } 

    [Required(ErrorMessage = "Required")] 
    public string UpdatedByEmployeeNumber { get; set; } 
} 

這僅僅是一個基本的例子。

+0

,同時實施不顯眼的客戶端驗證,我們可以忽略其中的一些 –