是的你可以; 但您需要指定 POST 的方法。
这不起作用:
<form id="frmThing" action="@Url.Action("Gah", "Home")">
<input id="input_a" name="myArray[hashKey1]" value="123" />
<input id="input_b" name="myArray[hashKey2]" value="456" />
<input type="submit" value="Submit!"/>
</form>
这样做:
<form id="frmThing" action="@Url.Action("Gah", "Home")" method="POST">
<input id="input_a" name="myArray[hashKey1]" value="123" />
<input id="input_b" name="myArray[hashKey2]" value="456" />
<input type="submit" value="Submit!"/>
</form>
编辑:要实际访问 C# 中的详细信息,在您的示例中,您将执行以下操作之一:
String first = collection[0];
String secnd = collection[1];
或者
String first = collection["myArray[hashKey1]"];
String secnd = collection["myArray[hashKey2]"];
甚至:
foreach (var item in collection) {
string test = (string)item;
}
编辑二:
这是一个技巧,您可以使用它来获得您想要看到的行为。首先,定义一个扩展方法:
public static class ExtensionMethods
{
public static IEnumerable<KeyValuePair<string, string>> Each(this FormCollection collection)
{
foreach (string key in collection.AllKeys)
{
yield return new KeyValuePair<string, string>(key, collection[key]);
}
}
}
然后在您的操作结果中,您可以执行以下操作:
public ActionResult Gah(FormCollection vals)
{
foreach (var pair in vals.Each())
{
string key = pair.Key;
string val = pair.Value;
}
return View("Index");
}