int []上的数据注释

时间:2014-12-03 10:39:26

标签: validation asp.net-mvc-5 data-annotations

在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验证的版本:

  • jQuery Validation Plugin - v1.11.1 - 3/22/2013
  • jquery.validate.unobtrusive.min.js:没有版本(两者都没有 jquery.validate.unobtrusive..js)

1 个答案:

答案 0 :(得分:1)

您可以使用MinLengthAttribute

[MinLength(1)]
public int[] fields{ get; set; }

修改

根据其他评论,正在使用隐藏<select>的jquery插件。默认情况下,不验证隐藏字段。要包含隐藏字段,请添加以下

$.validator.setDefaults({ 
 ignore: []
});