Formcollection如何访问HTML表单关联数组
本文关键字:HTML 表单 关联 数组 访问 何访问 Formcollection | 更新日期: 2023-09-27 18:01:36
我尝试在c#中访问关联数组。数组是每个帖子发送到我的c# mvc web应用程序。
e。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
...
}
我希望你能跟着我:-/
可以;但是你需要指定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");
}