gpt4 book ai didi

c# - 将数据从一个 Controller 操作传递到 ASP.Net MVC 5 中的另一个 Controller 操作

转载 作者:太空宇宙 更新时间:2023-11-03 15:05:58 26 4
gpt4 key购买 nike

我需要将数据从一个 Controller 操作传递到另一个 Controller 操作。我不想用

一个。 session

临时数据

逻辑

下面的代码是关于忘记密码的。用户键入他的电子邮件以重置密码,然后被重定向到另一个 View ,他可以在其中放置通过电子邮件收到的 token 。现在我希望第一个 View 中的 emailID 作为隐藏字段(或任何)发送,以便我可以发送 token 以及 emailID(隐藏)输入时进行验证发布第二个 View 。好的,下面是我尝试过的

FirstMV.cs

public class FirstMV
{
public string Email { get; set; }
}

SecondMV.cs

public class SecondMV
{
public string Token { get; set; }
public string Email { get; set; }
}

FirstView.cshtml

@model FirstMV
@Html.LabelFor(m => m.Email)
@Html.TextBoxFor(m => m.Email, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Email)

SecondView.cshtml

@model SecondMV
@Html.LabelFor(m => m.Token)
@Html.TextBoxFor(m => m.Token, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Token)
// HERE I WANT TO PUT ONE HIDDEN FIELD MAY BE FOR EMAIL ID

Controller :

[HttpGet]
public ActionResult FirstView()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ForgotPassword(FirstMV viewModel)
{
// Some code
return RedirectToAction("SecondView", new SecondMV { Email = viewModel.Email });
}

[HttpGet]
public ActionResult SecondView(SecondMV viewModel)
{
return View();
}
[HttpPost]
public ActionResult SecondView(SecondMV viewModel)
{
// Some Code
return View();
}

我收到错误消息,因为 SecondView 被定义了两次。

问题 1: 我实现上述功能的唯一方法是 TempData 和 Session。我是初学者所以请指导我。如果最佳实践是在我的场景中使用 Tempdata 和 Session,请告诉我。我会遵守的。

问题 2:我们能否借助“传递匿名对象”到另一个 Controller 操作。

最佳答案

您遇到的问题是您在第二个操作集(在我的示例中为 ForgotPasswordCode)上创建了重复签名。您需要将新模型类型发送到第二组的 Get 中,或者发送 FirstMV,这就是我所展示的。试试这个,看看它是否适合你:

Controller 操作:

[HttpGet]
public ActionResult ForgotPassword()
{
Models.FirstMV model = new Models.FirstMV();
return View(model);
}

[HttpPost]
public ActionResult ForgotPassword(Models.FirstMV model)
{
// Do forgot password stuff and redirect

Models.SecondMV secondModel = new Models.SecondMV
{
Email = model.Email,

};

return RedirectToAction("ForgotPasswordCode", "Home", secondModel);
}

[HttpGet]
public ActionResult ForgotPasswordCode(Models.FirstMV model)
{
Models.SecondMV secondModel = new Models.SecondMV
{
Email = model.Email
};

return View(secondModel);
}

[HttpPost]
public ActionResult ForgotPasswordCode(Models.SecondMV model)
{
if (model.Token == "MyTokenValue")
{
return RedirectToAction("ForgotPasswordSuccess", "Home");
}
else
{
return RedirectToAction("ForgotPasswordFailed", "Home");
}
}

[HttpGet]
public ActionResult ForgotPasswordSuccess()
{
return View();
}

[HttpGet]
public ActionResult ForgotPasswordFailed()
{
return View();
}

忘记密码表格

@model WebApplication11.Models.FirstMV

@using (Html.BeginForm("ForgotPassword", "Home", new { Email = Model.Email }, FormMethod.Post))
{

@Html.LabelFor(m => m.Email)
@Html.TextBoxFor(m => m.Email, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Email)
<button type="submit">Submit</button>

}

忘记密码代码表

@model WebApplication11.Models.SecondMV


@using (Html.BeginForm("ForgotPasswordCode", "Home", new { Email = Model.Email, Token = Model.Token }, FormMethod.Post))
{

@Html.LabelFor(m => m.Token)
@Html.TextBoxFor(m => m.Token, new { @class = "form-control" })
@Html.HiddenFor(x => x.Email)
@Html.ValidationMessageFor(m => m.Token)
<button type="submit">Submit</button>
}

关于c# - 将数据从一个 Controller 操作传递到 ASP.Net MVC 5 中的另一个 Controller 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43550166/

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