gpt4 book ai didi

c# - asp.net MVC 4 通过不同的形式多次发布

转载 作者:IT王子 更新时间:2023-10-29 04:20:28 25 4
gpt4 key购买 nike

现在我明白了

if (IsPost){   //do stuff }

检查该页面上的所有发布方法。但是,我有 2 种不同的形式发布 2 种不同的信息。这些是登录表单和注册表单。

有没有一种方法可以根据哪种形式检查 IsPost?例如,

if(Login.IsPost){ //do stuff }

但是我该如何定义登录变量呢?我的表单如下所示:

<form id="Login" method = "POST">

我试过:

var Login = Form.["Login"]

没用。

我将不胜感激。

谢谢。

最佳答案

在 MVC View 中,您可以根据需要拥有任意数量的表单和任意数量的字段。为了简单起见,使用一个 View 模型,其中包含页面上每个表单所需的所有属性。请记住,您只能访问您提交的表单中的表单字段数据。因此,如果您在同一页面上有登录表单和注册表单,您可以这样做:

登录注册 View 模型.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; }
}

你的 View 名称.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' />

成员 Controller .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 名称没有附加“Controller”:

@using (Html.BeginForm("Login", "Member", FormMethod.Post, new {}))

代替:

@using (Html.BeginForm("Login", "MemberController", FormMethod.Post, new {}))

关于c# - asp.net MVC 4 通过不同的形式多次发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15788806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com