Проверка не относится к выпадающим спискам в mvc5 - PullRequest
0 голосов
/ 17 мая 2019

Обратите внимание на следующий код.Моя проблема заключается в том, что после обновления 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>

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Если вы не хотите использовать указанный выше обнуляемый тип @Mannan Bahelim, вы можете перейти к этому атрибуту диапазона, который разрешает только целые числа больше нуля.

 [Range(1, Int32.MaxValue, ErrorMessage = "*")]
0 голосов
/ 17 мая 2019

Атрибут RequiredAttribute указывает, что при проверке поля в форме поле должно содержать значение. Исключение проверки возникает, если свойство null, содержит пустую строку ("") или содержит только пробельные символы.

Так что [Required] работает только для обнуляемого типа. Попробуйте использовать Nullable<int> или int? вместо int.

[Required(ErrorMessage = "*")]
public int? PaymentTypeID { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...