如何将值列表从actionresult(controller)传递给另一个并检索它?

时间:2019-05-20 06:14:54

标签: asp.net-mvc-4

我想将一个动作方法中的项目列表传递给控制器​​中的另一个方法,并查看这些数据。我试图返回RedirectAction方法,但我无法检索该数据。我该如何解决  首要行动方法:

 [HttpPost]
 public ActionResult  matchpin(string id)
    {
        int d = Convert.ToInt32(id);
        List<pin> plist = new List<pin>();
        using (SqlConnection con = new SqlConnection(constring))
        {
            using (SqlCommand cmd = new SqlCommand("getpin", con))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.AddWithValue("@pin", d);
                con.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    var pin = new pin()
                    {
                        // Vid=Convert.ToInt32(reader["Vid"]),

                        po = Convert.ToString(reader["po"]),

                    };
                    plist.Add(pin);
                }


            }
        }

        return RedirectToAction("Index","home",new{ s =plist});

    }

第二种动作方法:

 public ActionResult Index(List<pin> plist)
        {

           // return View();
            ViewBag.s = plist;
            return View("Index");
            //return new ContentResult { Content =TempData["Data"].ToString() };

        }

4 个答案:

答案 0 :(得分:0)

第一个操作方法中的重定向必须为

return RedirectToAction("Index","home",new{plist});

代替

return RedirectToAction("Index","home",new{s=plist});

因为ASP MVC框架通过方法参数名称将其匹配,所以您必须在操作方法二(plist)中使用相同的名称进行传递。

答案 1 :(得分:0)

您可以使用TempData:首先将您的值存储在TempData中,然后将redirectToAction:

TempData.MyList=plist;
return RedirectToAction("Index","home");

答案 2 :(得分:0)

使用操作可以传递有限的数据。 Mvc提供了tempdata,可将数据从一个动作传递到另一个动作。

您还可以使用会话来存储数据。

e。 G 传递数据: TempData [“ mydata”] = myList;

对于数据检索: var data = TempData [“ mydata”];

希望可以澄清您的问题。

答案 3 :(得分:0)

使用操作可以传递有限的数据。 Mvc提供了 TempData ,可将数据从一个动作传递到另一个动作。

您还可以使用会话来存储数据。

例如

用于存储数据: TempData [“ mydata”] = data;

用于检索:

var storageData = TempData [“ mydata”]