Попытка присвоить полю представления значение строки, но строка не отправляется

#asp.net-core #view #asp.net-core-mvc #viewmodel

#asp.net-ядро #Вид #asp.net-core-mvc #viewmodel

Вопрос:

Чтобы дать некоторую информацию, я пытаюсь установить временный пароль для учетной записи, который потребуется изменить при входе в систему.

Я создаю «Случайную строку» и устанавливаю для нее переменную ViewBag здесь:

         public IActionResult CreateAdminAccount()
        {
            Random rng = new Random();
            var num = rng.Next(1, 100);

            ViewBag.Password = "Administrator"   num   "!";

            return View();
        }
 

Я устанавливаю значение Password поля для этой переменной для просмотра в виде открытого текста (отключено, поэтому поле нельзя изменить).

             <!-- rest of form omitted for brevity -->

            <div class="form-group">
                <label asp-for="Password" class="control-label"></label>
                <input asp-for="Password" class="form-control" value="@ViewBag.Password" disabled />
                <span asp-validation-for="Password" class="text-danger"></span>
            </div>
 

Когда я отправляю форму, я получаю сообщение об ошибке проверки, в котором указано, что «Поле пароля обязательно». Есть ли какое-то взаимодействие, которого мне не хватает? поскольку я могу видеть это значение в представлении, я думаю, что оно будет отправлено вместе с формой вместе с остальными полями (соответствующее свойство ViewModel ниже).

         [Required]
        public string Password { get; set; }
 

Ответ №1:

Пожалуйста, обратите внимание, что отключенные элементы в форме не будут отправлены. Вы можете попробовать сделать его доступным только для чтения, как показано ниже.

 <input asp-for="Password" class="form-control" value="@ViewBag.Password" readonly />
 

Комментарии:

1. Ах, хорошо, имеет смысл, что это был просто простой недосмотр … очень признателен!