MVC ビューでは、必要な数のフィールドを持つフォームをいくつでも作成できます。シンプルにするために、すべてのフォームのページで必要なすべてのプロパティを備えた単一のビュー モデルを使用します。送信したフォームのフォーム フィールド データにのみアクセスできることに注意してください。したがって、同じページにログイン フォームと登録フォームがある場合は、次のようにします。
LoginRegisterViewModel.cs
public class LoginRegisterViewModel {
public string LoginUsername { get; set; }
public string LoginPassword { get; set; }
public string RegisterUsername { get; set; }
public string RegisterPassword { get; set; }
public string RegisterFirstName { get; set; }
public string RegisterLastName { get; set; }
}
YourViewName.cshtml
@model LoginRegisterViewModel
@using (Html.BeginForm("Login", "Member", FormMethod.Post, new {})) {
@Html.LabelFor(m => m.LoginUsername)
@Html.TextBoxFor(m => m.LoginUsername)
@Html.LabelFor(m => m.LoginPassword)
@Html.TextBoxFor(m => m.LoginPassword)
<input type='Submit' value='Login' />
}
@using (Html.BeginForm("Register", "Member", FormMethod.Post, new {})) {
@Html.LabelFor(m => m.RegisterFirstName)
@Html.TextBoxFor(m => m.RegisterFirstName)
@Html.LabelFor(m => m.RegisterLastName)
@Html.TextBoxFor(m => m.RegisterLastName)
@Html.LabelFor(m => m.RegisterUsername)
@Html.TextBoxFor(m => m.RegisterUsername)
@Html.LabelFor(m => m.RegisterPassword)
@Html.TextBoxFor(m => m.RegisterPassword)
<input type='Submit' value='Register' />
}
MemberController.cs
[HttpGet]
public ActionResult LoginRegister() {
LoginRegisterViewModel model = new LoginRegisterViewModel();
return view("LoginRegister", model);
}
[HttpPost]
public ActionResult Login(LoginRegisterViewModel model) {
//do your login code here
}
[HttpPost]
public ActionResult Register(LoginRegisterViewModel model) {
//do your registration code here
}
BeginForm を呼び出すときは、「Controller」を付けずにコントローラー名を渡すことを忘れないでください。
@using (Html.BeginForm("Login", "Member", FormMethod.Post, new {}))
それ以外の:
@using (Html.BeginForm("Login", "MemberController", FormMethod.Post, new {}))