我尝试访问c#中的关联数组。每个帖子将数组发送到我的c#mvc Web应用程序。
即G。 HTML格式
<Input Name="myArray[hashKey1]" value="123">
<Input Name="myArray[hashKey2]" value="456">
并且在c#中我需要键和值 - 可能还有数据字典?!
[HttpPost]
public ActionResult Index(FormCollection collection)
{
Dictionary<string, string> = KEY, VALUE
...
}
我希望你能跟着我: - /
答案 0 :(得分:0)
是的,你可以;但是你需要指定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");
}