【问题标题】:Validation does not apply to dropdowns in mvc5验证不适用于 mvc5 中的下拉菜单
【发布时间】: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>

【问题讨论】:

标签: asp.net-mvc unobtrusive-validation


【解决方案1】:

RequiredAttribute 属性指定当验证表单上的字段时,该字段必须包含一个值。如果属性为 null、包含空字符串 ("") 或仅包含空白字符,则会引发验证异常。

所以[Required] 仅适用于可空类型。尝试使用Nullable&lt;int&gt;int? 而不是int

[Required(ErrorMessage = "*")]
public int? PaymentTypeID { get; set; }

【讨论】:

    【解决方案2】:

    如果您不想使用@Mannan Bahelim 的上述可空类型,那么您可以使用此范围属性,它的作用是只允许大于零的整数。

     [Range(1, Int32.MaxValue, ErrorMessage = "*")]
    

    【讨论】:

      猜你喜欢
      • 2019-02-12
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多