现在我明白了
if (IsPost){ //do stuff }
检查该页面上的所有发布方法。但是,我有2种不同的形式发布2种不同的信息。这些是登录表单和注册表单。
有什么方法可以根据哪种形式检查IsPost?例如,
if(Login.IsPost){ //do stuff }
但是我该如何定义Login变量?我的表格如下:
<form id="Login" method = "POST">
我努力了:
var Login = Form.["Login"]
那没起效。
我将不胜感激。
谢谢。
在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 {}))