我有類似這樣的MVC項目驗證值...MVC 3 - 多行
型號
Public Class ItemDetails
Public Property SerialNo As Integer
Public Property Description As String
Public Property GroupNo As Integer
Public Property Price As String
Public Property Quantity As Integer
End Class
控制器
Function ListItems() As ActionResult
' GetItems retrieves the items from the database
Dim i As List(Of ItemDetails) = ItemsRepository.GetItems
Return View(i)
End Function
查看
@ModelType List(Of MyApp.ItemDetails)
@Using Html.BeginForm()
Dim RowNo As Integer
For i As Integer = 0 To Model.Count - 1
RowNo = i
@Html.HiddenFor(Function(model) model(RowNo).SerialNo)
@Html.LabelFor(Function(model) model(RowNo).Description)
@Html.HiddenFor(Function(model) model(RowNo).GroupNo)
@Html.LabelFor(Function(model) model(RowNo).Price)
@Html.TextBoxFor(Function(model) model(RowNo).Quantity)
Next
End Using
注意:這是從內存完成的,因此可能不完全準確。
正如你所看到的,這顯示了一個項目列表。這些項目從數據庫中檢索。每個項目都有一個說明和一個組號。用戶可以輸入他們想要訂購的每件物品的數量。
兩個或更多項目可以在同一組中。例如,可能存在:組1中的項目1,組1中的項目2,組2中的項目3和組3中的項目4.
當用戶單擊提交時,我想驗證每個組的否合併數量不超過10.因此,在上面的示例中,如果我爲項目1輸入數量爲7,則項目2的數量必須爲3或更少。
我可以很容易地驗證客戶端。
有關驗證此服務器端(何處以及如何)的最佳方法是什麼?
我需要爲每個組的數量總和不超過10的總和的總和,如果它顯示錯誤。
謝謝,我會給這個早上試試。看起來它會對我很好。注意:價格欄是小數(我只是從內存中輸入)。 – 2012-07-12 19:50:29
感謝驗證屬性爲我完美工作。我只需要弄清楚現在是否有可能使客戶端驗證正確工作。例如,如果我對Quantity有Required屬性,這將驗證客戶端。我有jQuery來驗證Group No,但不知道如何讓它像Required屬性那樣不顯眼地工作。 – 2012-07-13 10:50:00
@cw_dev,您需要使'EnsureMaxGroupItemsAttribute'實現IClientValidatable接口,然後爲此規則編寫一個自定義的不顯眼的適配器。 – 2012-07-13 11:24:24