enumdropdownlistfor的jquery验证
我有这个密码 剃须刀页面:enumdropdownlistfor的jquery验证,jquery,asp.net,asp.net-mvc-3,razor,jquery-validate,Jquery,Asp.net,Asp.net Mvc 3,Razor,Jquery Validate,我有这个密码 剃须刀页面: <div class="editor-label"> @Html.LabelFor(model => model.Citizenship) </div> <div class="editor-field"> @Html.EnumDropDownListFor(model => model.Cit
<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>
最后我得到了这个HTML:
<select data-val="true" data-val-required="Пожалуйста, укажите значение" id="Citizenship" name="Citizenship"><option value=""></option>
<option value="RF">Российская Федерация</option>
<option value="other">другое государство</option>
</select>
在控制器中:
[HttpPost]
[Authorize]
public ActionResult Edit ( ClassOfModel model )
{
if ( ModelState.IsValid )
{
if ( model.Citizenship == null )
{
ModelState.AddModelError( "Citizenship", "Пожалуйста, укажите значение" );
}
// Do something (e.g. save data)
}
return View( model );
}
在控制器中:
[HttpPost]
[Authorize]
public ActionResult Edit ( ClassOfModel model )
{
if ( ModelState.IsValid )
{
if ( model.Citizenship == null )
{
ModelState.AddModelError( "Citizenship", "Пожалуйста, укажите значение" );
}
// Do something (e.g. save data)
}
return View( model );
}
我现在也有同样的问题。 如果没有从dropdownlist中选择任何项,枚举将获得0值,对于jquery验证程序来说,它可能是一个正确的值,因此它通过了验证 因此,我为我的枚举类型添加了一个范围验证属性:
[Range(1, int.MaxValue)]
[EnumDataType(typeof(Priority))]
public Priority Priority { get; set; }
在那之后,jquery验证就如我所希望的那样工作了
注意:通过添加[EnumDataType]属性,如果未选择任何项,则控制器中的ModelState将无效,因此您可以在控制器中使用它进行验证。我现在也遇到了同样的问题。 如果没有从dropdownlist中选择任何项,枚举将获得0值,对于jquery验证程序来说,它可能是一个正确的值,因此它通过了验证 因此,我为我的枚举类型添加了一个范围验证属性:
[Range(1, int.MaxValue)]
[EnumDataType(typeof(Priority))]
public Priority Priority { get; set; }
在那之后,jquery验证就如我所希望的那样工作了
注意:通过添加[EnumDataType]属性,如果未选择任何项,则控制器中的ModelState将无效,因此您可以在控制器中使用它进行验证。另一种方法是使viewmodel中的字段为空,并根据需要进行标记。另一种方法是使viewmodel中的字段为空,并按要求进行标记。