我有一个下拉列表,可以选择一个值
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Screenname(FormCollection collection)
{
Viewdata["screenname"] = collection[0];
return RedirectToAction("Index", new { ScreenName = ViewData["screenname"] });
}
然后我想在其他操作中访问此ViewData
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(FormCollection collection, string screenname)
{
try
{
/// thats my dataobject which creates
DataObj.SaveData(Guid.Empty, collection, screenname);
return RedirectToAction("Index", new { ScreenName = ViewData["screenname"] });
}
catch
{
return View("Error");
}
}
其中index看起来像这样......
public ActionResult Index(string ScreenName)
{
///thats my list
GetTable = new GetDataTable(ScreenName);
return View(GetTable);
}
首先,当我选择值并且索引正确执行....但是当我尝试再次访问viewdata时它不包含值,所以任何人如果请帮助... 或者保存和检索数据的替代方法。
答案 0 :(得分:2)
ViewData
对象特定于正在执行的特定操作。要在操作之间传递数据,请使用TempData
。更多关于MSDN上的the difference between the two。
您还可以通过Controller.Session
属性直接写入会话状态。
答案 1 :(得分:1)
这实际上在这里经常被涵盖。现在的解决方案是在使用RedirectToAction()之前使用TempData来保存所需的数据。
如果你搜索“RedirectToAction”,你会发现很多关于这个主题的帖子,such as this one。
该框架的下一个正式版本将解决这个问题。
答案 2 :(得分:-1)
我使用视图从用户获取数据,然后将其保存到静态变量,然后使用此变量将数据传递给所有其他视图。
非常感谢