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
     ...
    }

我希望你能跟着我:-/

Formcollection如何访问HTML表单关联数组

可以;但是你需要指定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");
}