Хотите отобразить сообщение в макете от дочернего действия?

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

1 ответ

Решение

Вы можете поместить в свой макет сводку проверки. (Синтаксис бритвы):

<div>@Html.ValidationSummary(false)</div>

Затем просто украсьте viewmodel, которая передается на ваш логин, с помощью атрибутов [Required].

public class LoginViewModel
{
    [Required(ErrorMessage="Please enter a your user name.")]
    public string UserName { get; set; }

    [Required(ErrorMessage = "Please your password.")]
    public string Password{ get; set; }
}

или если вы хотите поместить более общее сообщение об ошибке, просто оставьте свойства вашей viewmodel украшенными атрибутом [Required], затем в контроллере входа в методе POST сделайте что-то вроде этого:

[HttpPost]
public ActionResult Login(LoginViewModel viewModel)
{
    if (!ModelState.IsValid)
    {
        ModelState.AddModelError("Error", "Sorry, your login failed, please try again.");
    }
}

эта ошибка будет отображаться в сводке проверки.

Другие вопросы по тегам