Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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
enumdropdownlistfor的jquery验证_Jquery_Asp.net_Asp.net Mvc 3_Razor_Jquery Validate - Fatal编程技术网

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中的字段为空,并按要求进行标记。