MVC3: невозможно вернуть сообщения об ошибках проверки входа в Index.cshtml с помощью Login PartialView

Я новичок в 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() показывает только сообщение об ошибке регистрации?


person brian    schedule 09.07.2012    source источник
comment
Где сообщение об ошибке не отображается? в резюме проверки?   -  person VJAI    schedule 09.07.2012


Ответы (1)


Вы должны использовать @Html.ValidationSummary() внутри формы для отображения ошибок проверки модели.

Ex.

@using(Html.BeginForm())
{
   @Html.ValidationSummary()
   .. fields
}
person VJAI    schedule 09.07.2012