Dav*_*d15 25 c# forms asp.net-mvc http-post
现在我明白了
if (IsPost){ //do stuff }
Run Code Online (Sandbox Code Playgroud)
检查该页面上的所有发布方法.但是,我有两种不同的形式发布2个不同的信息.这些是登录表单和注册表单.
有没有办法可以根据哪种形式检查IsPost?例如,
if(Login.IsPost){ //do stuff }
Run Code Online (Sandbox Code Playgroud)
但是我如何定义Login变量?我的表格如下:
<form id="Login" method = "POST">
Run Code Online (Sandbox Code Playgroud)
我试过了:
var Login = Form.["Login"]
Run Code Online (Sandbox Code Playgroud)
那没起效.
我将不胜感激任何帮助.
谢谢.
jps*_*ook 32
在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; }
}
Run Code Online (Sandbox Code Playgroud)
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' />
Run Code Online (Sandbox Code Playgroud)
}
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
}
Run Code Online (Sandbox Code Playgroud)
不要忘记,在调用BeginForm时,您传递的控制器名称没有附加"Controller":
@using (Html.BeginForm("Login", "Member", FormMethod.Post, new {}))
Run Code Online (Sandbox Code Playgroud)
代替:
@using (Html.BeginForm("Login", "MemberController", FormMethod.Post, new {}))
Run Code Online (Sandbox Code Playgroud)
edt*_*ant 27
我只是为每个需要的表单加载一个局部视图(包含一个表单),给每个部分一个不同的viewmodel: