現在我有一個viewmodel包含三個輸入列表; textboxinput,dropdownlistinput和checkboxinput。每個列表都是輸入對象的列表,其中包含四個值;參數,參數名稱,參數類型和值。我使用這些輸入列表來根據每個列表包含多少個對象在窗體上生成可變數量的字段。FluentValidation與對象列表
我目前的問題是,我不知道如何通過流利的驗證來驗證列表對象中的變量。我知道每個列表的行爲應該如何處理,而我不知道如何使用FluentValidation編寫該行爲。
輸入模型:
Public Class Input
Property value As String
Property ParamName As String
Property ParamType As String
Property ParamEnums As List(Of String)
End Class
ParamViewModel:
Imports FluentValidation
Imports FluentValidation.Attributes
<Validator(GetType(ParamViewModelValidator))> _
Public Class ParamViewModel
Property TextBoxInput As List(Of Input)
Property DropdownListInput As List(Of Input)
Property CheckBoxInput As List(Of Input)
End Class
筆者認爲:
@modeltype SensibleScriptRunner.Input
@Code
@<div class="editor-label">
@Html.LabelFor(Function(v) v.value, Model.ParamName)
</div>
@<div class="editor-field">
@Html.TextBoxFor(Function(v) v.value)
</div>
End Code
:
@Modeltype SensibleScriptRunner.ParamViewModel
<h2>Assign Values to Each Parameter</h2>
@Code
Using (Html.BeginForm("Index", "Parameter", FormMethod.Post))
@<div>
<fieldset>
<legend>Parameter List</legend>
@For i = 0 To (Model.TextBoxInput.Count - 1)
Dim iterator = i
@Html.EditorFor(Function(x) x.TextBoxInput(iterator), "TextInput")
Next
@For i = 0 To Model.DropdownListInput.Count - 1
Dim iterator = i
@Html.EditorFor(Function(x) x.DropdownListInput(iterator), "EnumInput")
Next
@For i = 0 To Model.CheckBoxInput.Count - 1
Dim iterator = i
@Html.EditorFor(Function(x) x.CheckBoxInput(iterator), "CheckBoxInput")
Next
<p>
<input type="submit" value="Query Server"/>
</p>
</fieldset>
</div>
Html.EndForm()
End Using
End Code
的編輯器模板實例一3210
當前FluentValidation代碼:
Imports FluentValidation
Public Class ParamViewModelValidator
Inherits AbstractValidator(Of ParamViewModel)
Public Sub New()
RuleFor(Function(x) x.TextBoxInput).NotEmpty.[When](Function(x) Not IsNothing(x.TextBoxInput))
RuleFor(Function(x) x.DropdownListInput).NotEmpty.[When](Function(x) Not IsNothing(x.DropdownListInput))
RuleFor(Function(x) x.CheckBoxInput).NotEmpty.[When](Function(x) Not IsNothing(x.CheckBoxInput))
End Sub
End Class
我想的事情現在要做的是確認在每個我的列表中的每個對象,他們都有一個值的屬性,也並非一無是處。我可以通過驗證輸入模型來做到這一點嗎?現在,代碼用於確認列表本身不爲空,但列表中的對象仍然可以包含所有空值。有沒有一個微不足道的方法來做到這一點?
另外,我應該不同地設置我的代碼?