Как повторно открыть модальное окно после того, как ModalState недействителен с показанными ошибками?

У меня есть модальное окно входа в систему с проверкой. Проблема в том, что я не могу повторно открыть модальное окно, когда проверка не удалась.

Итак, у меня есть этот контроллер: Index(), который возвращает View домашней страницы. На этой домашней странице у меня есть модальное окно с проверкой.
Но после нажатия кнопки отправки (контроллер Login()) и после сбоя проверки URL-адрес /Index/Login, и я не могу передать значение ViewBag, которое сообщает модально открыть заново.

Вот код обоих контроллеров:

public ActionResult Index()
 {
   return View();
 }

[HttpPost]
public ActionResult Login(Users user)
{
 if (ModelState.IsValidField("username") && ModelState.IsValidField("password"))
    {
      if (Users.Login(user))
          {       
           //some custom logic
           return RedirectToAction("../Dashboard/Dashboard");
          }
          else
          {
              ViewBag.LoginError = "Wrong username/password";
          }       
      }
      else
      {

      }
      return View("Index");
  }

Мне очень нужна помощь, ребята. Я пытаюсь решить это весь день!

PS: я работаю с синтаксисом Razor на переднем плане.


person arabadziev    schedule 18.06.2018    source источник


Ответы (1)


Если у вас есть сценарии раздела в вашем _Layout.cshtml, который находится в /Views/Shared/_Layout.cshtml, вставьте приведенный ниже код в конец /Views/Home/Index.cshtml.

@section scripts
{
    <script>

        @if(ViewBag.LoginError == "Wrong username/password")
        {
            WriteLiteral("$('#login-modal').modal('show');");
        }
    </script>
}

Это можно сделать и с помощью ajax, однако выше приведено решение вашего вопроса.

Если скрипты раздела не определены в _Layout.cshtml, определите этот раздел в конце _Layout.cshtml, как показано ниже.

@RenderSection("scripts", required: false)
person Ajmal Amirzad    schedule 18.06.2018