在ASP.NET MVC5中,我使用所选的JS库进行多下拉选择。如何使用Data Annotation验证字段?
实际上我在所有字段上都使用[Required]
,这个多下拉列表也选择了,但它不起作用。
代码:
[MinLength(1)]
public int[] fields{ get; set; }
这是我在cshtml中的代码:
@Html.ListBoxFor(x => x.fields, Model.fieldsSelect, new { data_placeholder = "pholder" })
@Html.ValidationMessageFor(model => model.fields, "", new { @class = "text-danger" })
没有我目前使用(选择)的插件,没有验证,这是未经选择的HTML呈现:
<div class="col-md-10">
<select data-placeholder="Enter multiple fields" data-val="true" data-val-minlength="The field fieldsmust be a string or array type with a minimum length of '1'." data-val-minlength-min="1" id="fields" multiple="multiple" name="fields">
<option value="944454">WARUYFJGHIE</option>
<option value="33033095">WEBJKHGJHGVHGAN</option>
</select>
<span class="field-validation-valid text-danger" data-valmsg-for="fields" data-valmsg-replace="true"></span>
</div>
验证适用于我的所有字符串,但不适用于此字符串:当我在表单上没有选择任何内容时,字符串的所有[必需]都可以正常运行:错误消息正在显示并且提交不会触及控制器/服务器,而不是[MinLength (1)] ...没有错误消息,当我填写除[MinLength(1)]以外的所有内容时,表单正在提交,并且因为null而在控制器/服务器中发生错误。
JS验证的版本:
答案 0 :(得分:1)
您可以使用MinLengthAttribute
[MinLength(1)]
public int[] fields{ get; set; }
修改强>
根据其他评论,正在使用隐藏<select>
的jquery插件。默认情况下,不验证隐藏字段。要包含隐藏字段,请添加以下
$.validator.setDefaults({
ignore: []
});