Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 使用对象列表进行FluentValidation_Vb.net_Asp.net Mvc 3_Validation_Lambda_Fluentvalidation - Fatal编程技术网

Vb.net 使用对象列表进行FluentValidation

Vb.net 使用对象列表进行FluentValidation,vb.net,asp.net-mvc-3,validation,lambda,fluentvalidation,Vb.net,Asp.net Mvc 3,Validation,Lambda,Fluentvalidation,现在我有一个viewmodel,它包含三个输入列表;textboxinput、dropdownlistinput和checkboxinput。每个列表都是输入对象的列表,其中包含四个值;参数、参数名、参数类型和值。我使用这些输入列表在表单上生成可变数量的字段,这取决于每个列表包含多少对象 我目前的问题是,我不确定如何使用fluent验证来验证列表对象中的变量。我知道每个列表在不返回任何内容时的行为应该如何,但我不知道如何使用FluentValidation对该行为进行编码 输入模型: 公共类输入

现在我有一个viewmodel,它包含三个输入列表;textboxinput、dropdownlistinput和checkboxinput。每个列表都是输入对象的列表,其中包含四个值;参数、参数名、参数类型和值。我使用这些输入列表在表单上生成可变数量的字段,这取决于每个列表包含多少对象

我目前的问题是,我不确定如何使用fluent验证来验证列表对象中的变量。我知道每个列表在不返回任何内容时的行为应该如何,但我不知道如何使用FluentValidation对该行为进行编码

输入模型:

公共类输入
属性值作为字符串
属性参数名称为字符串
属性参数类型为字符串
属性参数作为列表(字符串的列表)
末级
ParamViewModel:

导入FluentValidation
导入FluentValidation.Attributes
_
公共类参数模型
属性TextBoxInput作为(输入的)列表
属性放置为列表(输入)
属性CheckBoxInput作为(输入的)列表
末级
我的看法是:

@Modeltype SensibleScriptRunner.ParamViewModel
为每个参数指定值
@代码
使用(Html.BeginForm(“Index”,“Parameter”,FormMethod.Post))
@ 
参数表
@对于i=0到(Model.TextBoxInput.Count-1)
Dim迭代器=i
@EditorFor(函数(x)x.TextBoxInput(迭代器),“TextInput”)
下一个
@对于i=0到Model.DropdownListInput.Count-1
Dim迭代器=i
@EditorFor(函数(x)x.dropDownlinput(迭代器),“EnumInput”)
下一个
@对于i=0到Model.CheckBoxInput.Count-1
Dim迭代器=i
@EditorFor(函数(x)x.CheckBoxInput(迭代器),“CheckBoxInput”)
下一个

Html.EndForm() 终端使用 结束代码
其中一个编辑器模板的示例:

@modeltype SensibleScriptRunner.Input
@代码
@
@LabelFor(函数(v)v.value,Model.ParamName)
@
@Html.TextBoxFor(函数(v)v.value)
结束代码
当前FluentValidation代码:

导入FluentValidation
公共类ParamViewModelValidator
继承(ParamViewModel的)AbstractValidator
公共分新()
(函数(x)x.TextBoxInput)的规则。NotEmpty.[When](函数(x)不为空(x.TextBoxInput))
(函数(x)x.DropdownListInput)的规则。NotEmpty。[当](函数(x)不为空(x.DropdownListInput))
(函数(x)x.CheckBoxInput)的规则。NotEmpty。[当](函数(x)不为空(x.CheckBoxInput))
端接头
末级
我现在要做的是确认在我的每个列表中的每个对象中,它们都有一个不是空的值属性。我可以通过验证输入模型来实现这一点吗?现在,代码用于确认列表本身不是null,但是列表中的对象仍然可以包含所有null值。有没有一个简单的方法可以做到这一点


或者,我应该以不同的方式设置代码吗?

好吧,我想出来了。对于任何好奇的人,我所要做的就是添加一个inputvalidator类

Imports FluentValidation

Public Class InputValidator
Inherits AbstractValidator(Of Input)

Public Sub New()
    RuleFor(Function(x) x.value).NotEmpty()
    RuleFor(Function(x) x.ParamName).NotEmpty()
    RuleFor(Function(x) x.ParamType).NotEmpty()
End Sub

End Class
将此添加到我的输入模型解决了所有问题。我不确定代码实际上在哪里检查此验证(我的编辑器模板指向输入作为模型,这可能与此有关;也可能是当我的paramviewmodelvalidator检查列表是否有效时,它还检查该列表中每个对象的条件(我想它就是这个)。不管怎样,如果有人有类似的问题,这里有一个解决方案