我正在尝试将string
中的Controller
随机View
传递给Controller
。
这是我的 [HttpPost]
public ActionResult DisplayForm(UserView user)
{
//some data processing over here
ViewData["choice"] = "Apple";
return RedirectToAction("Next", "Account");
}
代码:
Next.cshtml
现在我想传递那个数据值" Apple"我的观点//View: Next.cshtml
@{
ViewBag.Title = "Thanks for registering";
Layout = "~/Content/orangeflower/_layout.cshtml";
}
<p>Your favorite fruit is:</p>@ViewData["choice"]
创建如下:
Next.cshtml
但是当项目运行时,我无法在浏览器中看到我的数据。
以下是快照:
1)在调试时,控制器显示值:
2)浏览器视图没有显示值&#34; Apple&#34;
3)进一步调试我的Next
视图:
为什么值没有正确传递给View。我DisplayForm
和AccountController.cs
的控制器都位于同一个控制器{{1}}内,仍未显示值。
有人可以帮我解决这个问题吗?
答案 0 :(得分:11)
您正在渲染视图,而是重定向。如果您希望向视图传递一些信息,则需要在将此视图添加到ViewData
后返回此视图:
[HttpPost]
public ActionResult DisplayForm(UserView user)
{
//some data processing over here
ViewData["choice"] = "Apple";
return View();
}
如果您想传递一条在重定向后仍然存在的消息,您可以使用TempData
代替ViewData
。
[HttpPost]
public ActionResult DisplayForm(UserView user)
{
//some data processing over here
TempData["choice"] = "Apple";
return RedirectToAction("Next", "Account");
}
然后在Next操作中,您可以从TempData获取数据并将其存储在ViewData中,以便视图可以读取它。
答案 1 :(得分:1)
您正在执行后重定向 - 获取。正在为此请求设置ViewData
,该请求返回重定向,清除ViewData
,然后发生另一个没有数据的请求。请改用TempData
,并在下次请求时自动将其添加到ViewData
。