我有這種情況。要求的字段驗證MVC
我有一個form A
和form B
。這兩種形式都使用單一模型。在模型中有10個字段,所有字段都是強制性的(必需)。
表A使用模型的前5個字段和表格B用戶的其餘(6,7,8,9,10)
字段。
所以,當我提交form A
它問我要必填字段(6,7,8,9,10)
來填補,同樣是form B
的情況下,它要求我要提供(1,2,3,4,5)
場。我如何確保只有那些在表單上可用的字段纔是必需的。
我有這種情況。要求的字段驗證MVC
我有一個form A
和form B
。這兩種形式都使用單一模型。在模型中有10個字段,所有字段都是強制性的(必需)。
表A使用模型的前5個字段和表格B用戶的其餘(6,7,8,9,10)
字段。
所以,當我提交form A
它問我要必填字段(6,7,8,9,10)
來填補,同樣是form B
的情況下,它要求我要提供(1,2,3,4,5)
場。我如何確保只有那些在表單上可用的字段纔是必需的。
這可以通過使用視圖模型使您的視圖與相關視圖模型進行交互,然後視圖模型將與模型進行交互。請記住,視圖模型只包含與模型相關的字段。因此,這裏有步驟
1)使與字段兩個視點模型A(1,2,3,4,5)和B字段(6,7,8,9,10)
2)瀏覽將提交相關字段到他們的視圖模型,然後您可以提交到兩種模式
a)在視圖A的提交插入前五個值和插入接下來的五個字段與 虛擬或默認值。當提交視圖B時,請使用實際值更新此記錄的最後一個 五個值。 b)製作另一個ViewModelAB,其中包含所有十個不帶必需屬性的字段,製作該ViewModelAB的一個對象,並填寫兩個視圖模型(即A和B)的提交。當所有的字段填寫後提交給實際的數據庫模型
請詢問您是否需要進一步的幫助
我能想到兩種方法可以做到你所需要的:
與所有的字段創建兩個型號,但與RequiredAttribute標籤只爲您在每個窗體需要的人。所有的領域,所以你可以映射與對方沒有問題;
不使用RequiredAttribute,而是嘗試使用RemoteValidationAttribute,並根據調用的表單檢查是否應該拋出所需的錯誤;
的另一個選項是禁用客戶端驗證並僅執行服務器端之一。我的意思是,無論如何,在堅持模型之前,你總是應該做一個服務器端(檢查業務規則)驗證。