ove*_*ter 0 asp.net jquery jquery-validate razor asp.net-mvc-3
我有这个代码
剃刀页面:
<div class="editor-label">
@Html.LabelFor(model => model.Citizenship)
</div>
<div class="editor-field">
@Html.EnumDropDownListFor(model => model.Citizenship)
@Html.ValidationMessageFor(model => model.Citizenship)
</div>
Run Code Online (Sandbox Code Playgroud)
模型:
[DisplayName("???????????")]
[Required(ErrorMessageResourceType = typeof(Resources), ErrorMessageResourceName = "Required")]
public CitizenshipEnum? Citizenship { get; set; }
Run Code Online (Sandbox Code Playgroud)
最后我得到了这个HTML:
<select data-val="true" data-val-required="??????????, ??????? ????????" id="Citizenship" name="Citizenship"><option value=""></option>
<option value="RF">?????????? ?????????</option>
<option value="other">?????? ???????????</option>
</select>
Run Code Online (Sandbox Code Playgroud)
验证有什么问题吗?确实加载了unobtrusive.js和其他必需的脚本(其他输入验证正常工作)
我正在尝试通过添加自定义规则来解决此问题
像这样,但是不起作用:
$(function () {
$.validator.addMethod('selectNone', function (value, element) { debugger; return $(element).val(); }, "Please select an option");
$("form").validate({
rules: {
'#Citizenship': {
selectNone: true
}
}
});
};
Run Code Online (Sandbox Code Playgroud)
小智 5
我现在有同样的问题。如果没有从下拉列表中选择任何项,则枚举将获得0值,对于jquery验证器来说,它是一个适当的值,因此它通过了验证。
因此,我为我的枚举类型添加了一个范围验证属性:
[Range(1, int.MaxValue)]
[EnumDataType(typeof(Priority))]
public Priority Priority { get; set; }
Run Code Online (Sandbox Code Playgroud)
在那之后,jQuery验证按我的意愿工作。
注意:通过添加[EnumDataType]属性,如果未选择任何项目,则ModelState在控制器中将无效,因此您可以将其用于控制器中的验证。
| 归档时间: |
|
| 查看次数: |
1294 次 |
| 最近记录: |