如何在get请求中传递列表

时间:2014-09-19 08:31:30

标签: asp.net-mvc asp.net-mvc-4 encoding model-binding

我有一个用于传递字符串列表的网址

/Home/Index?Person%5B0%5D=Myname&Person%5B1%5D=Yourname

未编码,

/Home/Index?Person[0]=Myname&Person[1]=Yourname

行动方法

public ActionResult(List<string> person)
 {
...
}

参数列表人员将使用值Myname和Yourname正确填充。

我需要使用RedirectToAction

重定向到此网址

我通常会这样做

RedirectToAction("Index","Home",new {Parameter1=value1})

但显然我不能使用Person%5B0%5D作为参数名称,因为它有无效的字符。

我如何创建这样的链接或者我应该使用不同的URL方案?

1 个答案:

答案 0 :(得分:1)

您好我处理了您的查询,最后得到了结果,只需检查此代码,找到适合您查询的天气。

控制器代码:

public ActionResult showString()
        {
            try
            {

                IEnumerable<string> persons = new[] { "myname", "urname" };
                var values = new RouteValueDictionary(
                persons
                    .Select((sampleper, index) => new {sampleper, index })
                    .ToDictionary(
                        key => string.Format("[{0}]", key.index),
                        value => (object)value.sampleper
                    )
            );
            return RedirectToAction("details", values);




            }
            catch (Exception)
            {

                throw;
            }


        }

,另一个操作方法是详细信息,列表为参数

public ActionResult details(IEnumerable<string> persons)
        {
             ViewBag.person = persons;



            return View();
        }

如果您将链接作为

传递,它也有效
http://localhost:2266/Home/details?%5B0%5D=myname&%5B1%5D=urname

详细信息操作方法的视图是

@{
    ViewBag.Title = "details";
}

<h2>details</h2>
<ul>
  @foreach (var i in ViewBag.person)
  { 

  <li>@i</li>


  }

</ul>