Как я могу POST сформировать данные из модального загрузчика в бэкэнд?

У меня есть форма для входа и регистрации, которая работает должным образом при использовании в обычном представлении, однако, когда я помещаю эту форму в модальный режим (Bootstrap v3), она не может опубликовать данные (отладчик показывает все поля, которые должны быть нулевыми при отправке),

   @model myNamespace.Models.AllUserViewModels
    <div class="container">
  <div class="modal fade" id="LoginModal" tabindex="-1" role="dialog"      keyboard="true" aria-labelledby="LoginModal" aria-hidden="true">
    <div class="modal-dialog modal-sm" role="dialog">
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4>Login</h4>
        </div>
        <div class="modal-body">
          <form asp-controller="User" asp-action="LoginSubmit" method="post" class="form-group">
            <label asp-for="Log.Email">Email</label>
            <input asp-for="Log.Email" placeholder="Email Address" class="form-control" id="Email"> 
            <span asp-validation-for="Log.Email"></span>


            <label asp-for="Log.Password">Password</label>
            <input asp-for="Log.Password" placeholder="Password" class="form-control" id="Password"> 
            <span asp-validation-for="Log.Password"></span>

            <span>@ViewBag.loginError</span>

            <br>

            <button type="submit" class="btn btn-primary">Submit</button>

          </form>
        </div>

      </div>
    </div>
  </div>
</div>
  <!--End Login Modal -->

РЕДАКТИРОВАТЬ Причиной, по которой моя форма не отправлялась на мой контроллер, было то, что я забыл добавить глагол "POST" в метод моего контроллера.

2 ответа

Решение

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

        [HttpPost]
        [Route("LoginSubmit")]
        public IActionResult LoginSubmit(AllUserViewModels model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    // If there are no errors upon form submit check db for proper creds.
                    User LoggedUser = _context.Users.SingleOrDefault(u => u.Email == model.Log.Email);
                    var Hasher = new PasswordHasher<User>();
                    // Check    hashed password.
                    if (Hasher.VerifyHashedPassword(LoggedUser, LoggedUser.Password, model.Log.Password) != 0)
                    {
                        // Set user id in session for use in identification, future db calls, and for greeting the user.
                        HttpContext.Session.SetInt32("LoggedUserId", LoggedUser.Id);

                        return RedirectToAction("Account");
                    }
                    else
                    {
                        ViewBag.loginError = "Sorry, your password was incorrect.";
                        return View("landing");
                    }
                }
                // If no proper creds redirect to login page and return error.
                catch
                {
                    ViewBag.loginError = "Sorry, your email or password were incorrect.";
                    return View("landing");
                }
            }
            // If form submit was illegal redirect to login and display model validation errors.
            else
            {
                return View("landing");
            }
        }

Согласно документации, asp-for помощник по тегам генерирует id а также name атрибуты уже.

Создает атрибуты HTML id и name для имени выражения, указанного в атрибуте asp-for.

Итак, вы должны удалить атрибуты id на входах.

<input asp-for="Log.Password" placeholder="Password" class="form-control"> 
Другие вопросы по тегам