Я новичок в MVC (2 года в WebForms). Я пытаюсь реализовать вход в систему с помощью PartialView в моем Index.cshtml следующим образом:
@Html.Action("LogOnPartial")
Если имя пользователя или пароль неверны, вызываемый метод достигнет этой строки, как и ожидалось:
ModelState.AddModelError("", "The user name or password provided is incorrect.");
Поскольку это частичное представление, я передаю модель обратно в Index.cshtml следующим образом, чтобы отобразить «неправильные» записи:
// If we got this far, something failed, redisplay form
return View("Index", model);
Затем Index.cshtml вызовет @Html.Action("LogOnPartial"), что, в свою очередь, вызовет это:
[HttpPost]
public ActionResult LogOnPartial(LogOnModel model)
{
return PartialView(model);
}
После рендеринга «неправильные» записи останутся в текстовом поле, как и ожидалось, но приведенное выше сообщение об ошибке «Указано неверное имя пользователя или пароль». не отображается. Я предполагаю, что сообщения об ошибках не передаются в вышеуказанном методе.
Как я могу показать сообщение об ошибке при возврате из частичного представления?
Спасибо.
Спасибо, Маркс, ваше предложение очень полезно. Первоначально я уже включил @Html.ValidationSummary() в конец моего LogOnPartial.cshtml, но почему-то сообщение об ошибке не отображалось в Index.cshtml. Теперь я переместил @Html.ValidationSummary() в Index.cshtml следующим образом:
@Html.Action("LogOnPartial")
@Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.")
и теперь он работает нормально, и я вижу сообщение об ошибке входа в систему.
Однако теперь у меня другая проблема. В моем Index.cshtml есть два частичных представления. Один для LogOnPartial.cshtml, а другой для SignUpPartial.cshtml (вы можете взглянуть на www.iguardpayroll.com, написанный в WebForms, и вы увидите два поля в левом столбце: одно для входа в систему, а другой для регистрации).
Помимо добавления @Html.ValidationSummary() прямо под @Html.Action("LogOnPartial"), мне также нужно добавить его под @Html.Action("SignUpPartial"), чтобы показать сообщение об ошибке, вызванное процесс регистрации (например, электронная почта уже существует!). Однако, если я это сделаю, одно и то же сообщение об ошибке входа в систему появится дважды как в части входа в систему, так и в части регистрации.
<div>
@Html.Action("LogOnPartial")
@Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.")
</div>
<div>
@Html.Action("SignUpPartial")
@Html.ValidationSummary(true, "Sign Up was unsuccessful. Please correct the errors and try again.")
</div>
Как я могу сказать, что первый @Html.ValidationSummary() показывает только сообщение об ошибке, связанное с LogOnPartial, а второй @Html.ValidationSummary() показывает только сообщение об ошибке регистрации?