2009-11-19 62 views
0

我有一個形式帖子幾個像命名的元素,像這樣的動作:麻煩重定向的String []

<%= Html.TextBox("foo") %> 
<%= Html.TextBox("foo") %> 
<%= Html.TextBox("foo") %> 

職位,並返回:

public ActionResult GetValues(string[] foo) 
{ 
    //code 

    return RedirectToAction("Results", new { foo = foo }) 
} 

「結果」行動,那麼外觀像這樣:

public ActionResult Results(string[] foo) 
{ 
    //code 

    return View() 
} 

我遇到的問題是,後重定向我的網址是這樣的:

/results?foo=System.String[] 

而不是預期的:

/results?foo=value&foo=value&foo=value 

有沒有什麼辦法讓這個與我目前的設置工作?

回答

0

我沒有找到與上述代碼一起使用的解決方案。我最終做的是獲取數組/ Enumerable,循環遍歷它,並構建一個查詢字符串以通過重定向。沿着線的東西:

StringBuilder queryString = new StringBuilder(); 
for (int i = 1; i <= foo.Count(), i++) 
{ 
    if (i == 1) 
     queryString.Append("?foo=" + value); 
    else 
     queryString.Append("&foo=" + value); 
} 

這是不是我最後使用的代碼更簡單,但它也讓我放棄可能與形式提交的空值。清理一些東西。

0

嘗試改變參數的類型從string[]IEnumerable<string>

public ActionResult GetValues(IEnumerable<string> foo) { ... } 

如果仍然有問題,你的表格上做這樣的事情:

<%= Html.TextBox("foo[0]") %> 
<%= Html.TextBox("foo[1]") %> 
<%= Html.TextBox("foo[2]") %> 

應該這樣做。

+0

對不起,延遲響應...這沒有幫助。只是爲了澄清,我沒有任何問題獲取表單值綁定到一個字符串[]或IEnumerable ...我有問題,當我調用RedirectToAction並傳遞它的字符串[]或IEnumerable。 – 2009-11-29 04:47:32