您好我正在开发MVC3中的应用程序。我被困在一个地方。每当控制转到IIndex1
动作时,其参数值就变为0.但它应该与IIndex
动作参数中的值相同。我使用了session,ViewBag,ViewData但我的问题仍然存在。请建议我。
public ActionResult GetMDN(string msisdn)
{
number = msisdn.Substring(0, msisdn.IndexOf('$'));
if (number.ToLower() != "unknown" && number.Length == 12)
{
number = number.Remove(0, 2);
}
Session["msdresponse"] = number;
Session["moptr"] = msisdn.Substring(msisdn.LastIndexOf('$') + 1);
number = msisdn;
int sngid=int.Parse(ViewData["isongid"].ToString());
return RedirectToAction("IIndex1", new { iid = sngid });
}
public ActionResult IIndex(int id)
{
ViewBag.isongid = id;
ViewData["isongid"] = id;
Response.Redirect("http:XXXXXXXXXXXXXXXX");
return RedirectToAction("GetMDN");
}
public ActionResult IIndex1(int iid)
{
}
答案 0 :(得分:18)
您可以使用TempData。您可以将各种类型的数据传递给操作,无论它们是否在同一个控制器中。你的代码应该是这样的:
public ActionResult GetMDN(string msisdn)
{
int sngid=10;
TempData["ID"] = sngid;
return RedirectToAction("IIndex");
}
public ActionResult IIndex()
{
int id = Convert.ToInt32(TempData["ID"]);// id will be 10;
}
答案 1 :(得分:3)
使用TempData而不是ViewData / ViewBag来存储重定向后应该保留的数据。 ViewData / ViewBag允许从控制器传递值到视图。
有关此主题的内容:
http://www.codeproject.com/Articles/476967/WhatplusisplusViewData-cplusViewBagplusandplusTem
http://msdn.microsoft.com/en-us/library/dd394711(v=vs.100).aspx