Проверка и проверка условий и ограничение для текстового поля - PullRequest
0 голосов
/ 20 марта 2020

У меня есть текстовое поле pass в моем Create view

<div class="form-group">
       @Html.LabelFor(model => model.Password, htmlAttributes: new { @class = "control-label col-md-2" })
       <div class="col-md-10">
            @Html.EditorFor(model => model.Password, new { htmlAttributes = new { @class = "form-control" } })
</div>

В моем AccountController я пытался подтвердить пароль от 8 до 250 букв, кажется, что код работает неправильно, как при попытке запустить веб-сайт, он возвращает ошибку: «Невозможно выполнить привязку во время выполнения для пустой ссылки»

            if (ModelState.IsValid)
            {
                db.Accounts.Add(account);
                if(ViewBag.Password.Length > 8 && ViewBag.Password != null)
                {
                    db.SaveChanges();
                    return RedirectToAction("Index");
                }
                else return RedirectToAction("Create");

1 Ответ

0 голосов
/ 20 марта 2020

Обычно viewbag используется для отправки данных с контроллера на просмотр. и у вас уже есть свойство модели, так почему вы должны проверить с помощью viewbag ?.

Для минимальной и максимальной длины вы можете использовать аннотацию данных и добавить атрибут перед свойством модели. это будет проверка в ModelState.IsValid . вам не нужно делать дополнительный код для этого.

например.

[MinLength(8,ErrorMessage = "Min length length should be 8"),MaxLength(250,ErrorMessage ="Max length should be 250")]
public string Password { get; set; }

Вы также можете установить регулярное выражение для сложного пароля в соответствии с вашими требованиями.

...