Asp.net-Mvc
同一頁面中的多個表單 ASP.net MVC
我正在處理我的第一個 ASP.net MVC 項目,並且在同一頁面中使用多種表單時遇到了一些問題。首先,我創建了 2 個部分類:(*Register 將允許使用者註冊,*Login 它允許使用者登錄。)
然後我使用 HTML.render 將它們集成到我的“日誌頁”中。所以我必須使用 2 種不同的動作。像這個:
[HttpPost] public ActionResult Login(LogModel.Login Model) { if (ModelState.IsValid) { if (LogModel.Login.Verifuser(Model.IDUser, Model.Password)) { FormsAuthentication.SetAuthCookie(Model.IDUser, false); if (LogModel.Login.IsAdmin(Model.IDUser, Model.Password)) { return View("Admin/Index"); } else { return View("Agence/Index"); } } else { ModelState.AddModelError("", "Invalide username or Password"); return View(Model); } } return View(Model); }在錯誤情況下我被重定向到新頁面的問題(白頁包含驗證摘要)。所以我想知道如何在我的預設頁面 Logpage 中顯示此錯誤消息。
您可以通過三個動作和一個複雜的模型來解決這個問題。
public class LoginOrRegisterViewModel { public Models.RegisterViewModel Register { get; set; } public Models.LoginViewModel Login { get; set; } } [HttpGet] public ActionResult Login() { return View("Login", new LoginOrRegisterViewModel()); } [HttpPost] public ActionResult Register(Models.LoginViewModel model) { if(!ModelState.IsValid) return View("Login", new LoginOrRegisterViewModel(){ Register = model }); else { //TODO: Validate the user //TODO: Write a FormsAuth ticket //TODO: Redirect to somewhere } } [HttpPost] public ActionResult Login(Models.RegistrationViewModel model) { if(!ModelState.IsValid) return View("Login", new LoginOrRegisterViewModel(){ Login = model}); else { //TODO: CRUD for registering user //TODO: Write forms auth ticket //TODO: Redirect } }在您的程式碼中,確保您設置了表單的操作:
@model Models.LoginOrRegisterViewModel @using(Html.BeginForm("Login", "Controller", FormMethod.Post, new { id = "loginForm"})) { @Html.EditorFor(m => Model.Login) } @using(Html.BeginForm("Register", "Controller", FormMethod.Post, new { id = "registerForm"})) { @Html.EditorFor(m => Model.Register) }