如何将值从一个操作传递到另一个具有相同控制器的操作

Abh*_*ngh 7 asp.net-mvc razor asp.net-mvc-3

嗨,我正在开发MVC3中的应用程序.我被困在一个地方.每当控制进行IIndex1操作时,其参数值就变为0.但它应该与IIndexaction参数中的值相同.我使用了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)
        {

        }
Run Code Online (Sandbox Code Playgroud)

小智 21

您可以使用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;
    }
Run Code Online (Sandbox Code Playgroud)