我有一个表单可以将几个像命名元素一样发布到这样的动作:
<%= 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 :(得分:0)
尝试将参数类型从string[]
更改为IEnumerable<string>
:
public ActionResult GetValues(IEnumerable<string> foo) { ... }
如果您仍有问题,请在表单上执行以下操作:
<%= Html.TextBox("foo[0]") %>
<%= Html.TextBox("foo[1]") %>
<%= Html.TextBox("foo[2]") %>
应该这样做。
答案 1 :(得分: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);
}
这比我最终使用的代码简化得多,但它也允许我删除可能随表单提交的空值。清理一下。