Asp.net mvc 如何将值从一个动作传递到具有相同控制器的另一个动作

Asp.net mvc 如何将值从一个动作传递到具有相同控制器的另一个动作,asp.net-mvc,asp.net-mvc-3,razor,Asp.net Mvc,Asp.net Mvc 3,Razor,嗨,我正在用MVC3开发一个应用程序。我被困在一个地方。每次控件转到IIndex1操作时,其参数值都变为0。但它应该与IIndexaction参数中的值相同。我已经使用了session、ViewBag和ViewData,但我的问题仍然存在。请推荐我 public ActionResult GetMDN(string msisdn) { number = msisdn.Substring(0, msisdn.IndexOf('$'));

嗨,我正在用MVC3开发一个应用程序。我被困在一个地方。每次控件转到
IIndex1
操作时,其参数值都变为0。但它应该与
IIndex
action参数中的值相同。我已经使用了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)
        {

        }

使用TempData而不是ViewData/ViewBag来存储重定向后应保留的数据。 ViewData/ViewBag允许将值从控制器传递到视图

关于这一主题的阅读:


您可以使用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;
    }

这个代码对你不起作用吗?不。。。。。这就是我在这里发帖的原因。主要问题是,当控件从GetMDN操作传递到IIndex1操作时,Int iid hase的参数变为0。但它应该和IIndex动作参数中的任何值相同