2014-09-19 93 views
0

我有一個字符串傳遞如何通過在GET請求列表

/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}) 

但很明顯,我不能使用個人%5B0%5D作爲參數的名稱,因爲它已經ivalid字符。

如何創建這樣的鏈接,或者我應該使用不同的URL - 方案?

+0

你試過解碼版本'Person [0]'? – 2014-09-19 08:35:41

+0

[ASP.NET MVC-將數組對象作爲Html.ActionLink(...)]中的路徑值傳遞的可能的重複(http://stackoverflow.com/questions/717690/asp-net-mvc-pass-array- object-as-a-route-value-within-html-actionlink) – CodeCaster 2014-09-19 08:37:13

+0

@George Person [0]也不是有效的屬性名稱。該網址的作品,但我不能創建鏈接。 – 2014-09-19 08:44:01

回答

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> 
+0

工作thnak你! – 2014-09-22 12:08:41

+0

謝謝@MalcolmFrexner – 2014-09-22 12:10:19