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

UDP*_*UDP 3 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});
}
Run Code Online (Sandbox Code Playgroud)

当我在LoginAs视图中这样传递时,向我显示这样的Url,

http://localhost:33883/Admin/LoginAs?roles=System.String[]
Run Code Online (Sandbox Code Playgroud)

但是没有通过的价值观.

ram*_*ilu 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");
    }
Run Code Online (Sandbox Code Playgroud)

输出 -

在此输入图像描述

选项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");
    }
Run Code Online (Sandbox Code Playgroud)

输出 -

在此输入图像描述

选项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");
    }
Run Code Online (Sandbox Code Playgroud)

输出 -

在此输入图像描述