使用查询字符串MVC将数组传递给视图

时间:2015-04-25 09:18:40

标签: c# asp.net asp.net-mvc

我有多个角色,我需要通过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[]

但是没有通过值。

1 个答案:

答案 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");
    }

输出 -

enter image description here

选项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");
    }

输出 -

enter image description here

选项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");
    }

输出 -

enter image description here