我有一個單視圖模型用於多個窗體的設置和我的驗證導致我的問題。MVC,查看模型和[必需的]
問題1 我可以使用單一視圖模型,只驗證表單中使用的字段嗎?
我有一個視圖模型
public class KundeOrdreVM : IPanelVM
{
public string PhoneNumber { get; set; }
public string ItemEAN{ get; set; }
}
在我看來,我有兩種形式(代碼簡化了這個例子)
<form action="/CreatePhone" method="post" novalidate="novalidate">
@Html.EditorFor(model => model.PhoneNumber)
<input type="submit" value="Create Phone">
</form>
表2:
<form action="/CreateItem" method="post" novalidate="novalidate">
@Html.EditorFor(model => model.ItemEAN)
<input type="submit" value="Create Item">
</form>
每種形式的用途來自共享ViewModel的單個字段。
我的問題是,我想使兩個字段[必需的],但只有當用戶張貼使用該字段的窗體。
有沒有什麼辦法讓這項工作,而重新使用相同的ViewModel?
問題2 如果非要使用多個的ViewModels,輸入每種形式,是有一個很好的設計實踐指南我怎麼可以在一個單一的視圖與多的ViewModels工作?
我不喜歡爲我的頁面上的每個表單製作大量的@ Html.RenderPartial。表格是緊密相連的。
我很害怕這是案例。 那麼,我們如何處理一個我的頁面上有5個按鈕的情況,每個按鈕都是一個單獨的窗體,每個窗體都需要一個輸入欄。 我是否創建了5個ViewModel,然後創建了一個ParentViewModel來保存5個? – JesperGJensen
不知道我明白ParentViewModel如何適應這一點。是PhoneNumber/ItemEAN還是爲什麼您需要逐一添加它們而不是(通過單獨的按鈕/表單)而不是單個表單。是否要捕獲用戶意圖(即使用事件採購)?從上面的代碼看來,每個按鈕都與一個動作綁定在一起,所以您只需要一個視圖模型來執行該動作。在這種情況下,ParentViewModel的目的是什麼? – Tseng
情況是,我有一個訂單控制器和一個頁面,處理有關訂單的功能。在該頁面上,如果您有電話號碼,則可以創建新訂單,或者如果您擁有項目EAN,則可以將項目添加到列表中。兩個按鈕都是彼此相鄰的,您使用它們的順序是不相關的。我已經在我的控制器上使用了1個ViewModel,2個窗體,2個按鈕,2個動作。這導致了我這個問題,我不確定這種情況的最佳設計 – JesperGJensen