我试图在同一个Controller中将数据从一个Action传递到另一个。但是它总是以null为单位
措施1
ViewData["page"] = pageData;
措施2
var pageData = ViewData["page"];//Always Null
我有以下要求。
有人可以帮助我实现这个目标吗?
由于
答案 0 :(得分:2)
尝试TempData
:
TempData["page"] = pageData;
ViewBag和ViewData用于将数据从控制器传递到视图。
TempData用于将数据从当前请求传递到下一个请求 请求。
有关差异的其他信息,请参阅此链接Difference Between ViewData, ViewBag and TempData。
答案 1 :(得分:0)
ViewBag或ViewData仅从一个控制器操作生效到视图。
要在下一个立即操作中访问该值,请尝试使用与ViewData
类似语法的TempData答案 2 :(得分:0)
您要做的是填写ViewData["page"]
在您的操作中,然后将其传递给View。因为它只存在于你的Controller [Action] -> View
内。然后将其存储在一个元素(它可以是一个隐藏的输入)中,如:
<input type="hidden" name="ID" value=@ViewData["page"] id="ID" />
然后如果您希望在Next ActionResult中收到它,您可以轻松拨打下面的FormCollection
并从隐藏输入中获取值:
public ActionResult Example(FormCollection form)
{
var id = form["ID"];
}
这与ViewData和ViewBag的工作原理有关。的然而强>;如果您想直接在其他操作中使用数据,我建议您使用TempData
,如下所示:
TempData["page"] = pageData;
还有很多其他方法可以在您的其他操作中接收数据,例如Cookies
和Sessions
,但除非您不想遇到很多问题,我建议{{1} }。
<强>更新强>
使用TempData
,下一个最简单的选项是Session
它的工作原理如下:
创建:
Session
读:
Session["page"] = YourValue;
答案 3 :(得分:0)
试试这个
TempData["page"] = pageData;
它适用于多个操作但只有一个请求。
Session["page"] = pageData;
适用于多个请求,但更重要。
我希望这对你有所帮助。