2015-04-30 3 views
0

Я хотел бы добавить регистрационную форму на _layout страницу по умолчанию ASP.NET MVC 5.Предоставление формы регистрации в макете по умолчанию заголовка MVC

Теперь, когда я знаю, как включить частичную страницу в мой макет, одна вещь, с которой я борюсь, - это модель.

Как добавить модель в мое представление _Login (находясь в _Layout), но не для других моих представлений? Мне нужно будет переключить его, как только пользователь войдет в систему, потому что тогда мне это не нужно.

И как я могу перенаправить пользователя на мою обычную страницу входа после того, как логин не сможет отобразить их какую-либо ошибку модели?

ответ

1

Это на самом деле довольно тривиально. Вам просто нужно использовать дочернее действие. Для просто рендеринга формы на основе модели, все, что вам было бы нужно что-то, как в вашем AccountController классе:

[ChildActionOnly] 
public ActionResult HeaderLogin() 
{ 
    var model = new LoginViewModel(); 
    return PartialView("_Login", model); 
} 

Затем в макете просто вызовите следующую команду, где вы хотите, чтобы она появилась:

@Html.Action("HeaderLogin", "Account) 

Единственное, о чем нужно помнить, это то, что форма, заполняющая ваши поля входа, должна иметь свой атрибут action для URL-адреса вашей обычной страницы входа в систему. Затем он, естественно, будет загружаться в стандартный процесс входа в систему, отображая фактическую страницу входа в систему при ошибке.

+0

Удивительный, не думал об этом ... Это действительно тривиально. Можете принять свой ответ за несколько минут :) Спасибо! – SeToY

1

UPDATE: только что заметил еще один ответ, так что мой ответ, как дополнение к нему :)

Это немного сложно объяснить, но раскол LETT твой вопрос подвопросы:

1) Как чтобы redirrect использовать что-то вроде этого:

var result = await mgr.PasswordSignInAsync(model.Login, model.Password, model.RememberMe, shouldLockout: false); 

switch (result) 
{ 
    case SignInStatus.Success: 
     ResetCaptchaCounter(); 
     return RedirectToLocal(returnUrl); 
    case SignInStatus.LockedOut: 
     IncreaseCaptchaCounter(); 
     ModelState.AddModelError("", "The account is locked, try again later."); 
     return View("Lockout"); 
    case SignInStatus.RequiresVerification: 
     ResetCaptchaCounter(); 
     return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false }); 
    case SignInStatus.Failure: 
    default: 
     ModelState.AddModelError("", "Wrong login or password!"); 
     IncreaseCaptchaCounter(); 
     return View(); 
} 

2) Как добавить модель к просмотру _Login ...

Почему бы не написать такую ​​же модель? В любом случае ваш частичный вид и вид в реальном Логин должен содержать те же входы ...

3) Переключатель частичный вид (форма) Войти, чтобы показать что-то другое, когда пользователь вошел в систему:

  1. проверки, если пользователь аутентифицирован
  2. оказывать какой-либо другой частичный вид, как «Выход формы»

Спросите, если есть что-то еще и хотят знать, или если вы хотите более подробный ответ в какой-то части.

0

Вы можете указать частичный вид страницы компоновки.

@ Html.Partial ("~/Views/UserControlls/BreadCrum.cshtml")

и вы можете также передать некоторый Modle к этому частичному виду, так как.

@ Html.Partial ("~/Views/UserControlls/BreadCrum.cshtml ", model)