我有多个角色,我需要通过Return RedirectTo Action方法将这些角色传递给另一个视图,
我的代码
string[] roles = new string[] { "Admin", "Supervisor", "Interviewer" };
if (roles.Count() > 1)
{
return RedirectToAction("LoginAs","Admin",new{@roles = roles});
}
当我在LoginAs视图中这样传递时,会向我显示这样的Url,
http://localhost:33883/Admin/LoginAs?roles=System.String[]
但是没有通过值。
答案 0 :(得分:6)
选项1:
public ActionResult Index()
{
string[] roles = new string[] { "Admin", "Supervisor", "Interviewer" };
var routeParameters = new RouteValueDictionary();
for (int i = 0; i < roles.Length; i++)
{
routeParameters["roles[" + i + "]"] = roles[i];
}
return RedirectToAction("Test", "Student", routeParameters);
}
public ActionResult Test(string[] roles)
{
return View("Index");
}
输出 -
选项2:
使用TempData
public ActionResult Index()
{
string[] roles = new string[] { "Admin", "Supervisor", "Interviewer" };
TempData["data"] = roles;
return RedirectToAction("Test", "Student");
}
public ActionResult Test()
{
string[] roles = (string[])TempData["data"];
return View("Index");
}
输出 -
选项3:
使用Session
public ActionResult Index()
{
string[] roles = new string[] { "Admin", "Supervisor", "Interviewer" };
Session["data"] = roles;
return RedirectToAction("Test", "Student");
}
public ActionResult Test()
{
string[] roles = (string[])Session["data"];
return View("Index");
}
输出 -