はい、できます。ただし、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;
}
2 つを編集します。
見たい動作を得るために使用できるトリックを次に示します。まず、拡張メソッドを定義します。
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");
}