我想将一个动作方法中的项目列表传递给控制器中的另一个方法,并查看这些数据。我试图返回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() };
}
答案 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”]