【发布时间】:2019-05-17 23:38:33
【问题描述】:
注意以下代码。 我的问题是,自从将 mvc4 升级到 mvc5 后,下拉验证没有正确完成。在下面的代码中,虽然我在模型下拉菜单中设置了是必填项,但是如果用户不选择它,它不会给用户任何错误,并且会将数据库中的金额保存为零。
下拉菜单已使用 selected-jquery 设置样式
我的模特:
[Required(ErrorMessage = "*")]
public int PaymentTypeID { get; set; }
我的代码:
<html>
<head>
<script src="/Scripts/jquery-3.3.1.min.js" type="text/javascript"></script>
</head>
<body>
<div class="row">
<div class="col-md-1">
@Html.LabelFor(model => model.PaymentTypeID, new { @class = "control-lable" })
</div>
<div class="col-md-3">
@Html.DropDownListFor(model => model.PaymentTypeID, (SelectList)(ViewData["PaymentTypelist"]), "Choose..", new { @class = "form-control chosen-select" })
</div>
<div class="col-md-2">
@Html.ValidationMessageFor(model => model.PaymentTypeID)
</div>
</div>
<script src="/Scripts/Menu/html5shiv.js" type="text/javascript"></script>
<script src="/Scripts/jquery-ui-1.12.1.min.js" type="text/javascript"></script>
<script src="/Scripts/Menu/actions.js" type="text/javascript"></script>
<script src="/Scripts/Menu/jquery.cookies.2.2.0.min.js" type="text/javascript"></script>
<script src="/Scripts/bootstrap.min.js" type="text/javascript"></script>
<script src="/Scripts/fontawesome-all.js"></script>
<script src="/Scripts/modernizr-2.0.6-development-only.js" type="text/javascript"></script>
<script src="/Scripts/enquire.js" type="text/javascript"></script>
<script src="/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.pnotify.min.js" type="text/javascript"></script>
<script src="/Scripts/placeholdr.js" type="text/javascript"></script>
<script src="/Scripts/respond.min.js" type="text/javascript"></script>
<script src="/Scripts/chosen.jquery.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script>
<script src="/Scripts/knockout-3.4.2.js" type="text/javascript"></script>
<script src="/Scripts/attachfiles.js"></script>
<script src="/Scripts/jquery-ui-datetimepicker.min.js" type="text/javascript"></script>
</body>
</html>
【问题讨论】:
-
如果您使用 Chosen 为下拉菜单设置样式,则正在验证的元素将被隐藏。默认情况下不验证隐藏元素。您必须更改 jQuery Validate 设置以包括
ignore: [],这意味着什么都不忽略,验证包括隐藏元素在内的所有内容。
标签: asp.net-mvc unobtrusive-validation