Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
表单元素的c#html数组_C#_Javascript_Asp.net Mvc - Fatal编程技术网

表单元素的c#html数组

表单元素的c#html数组,c#,javascript,asp.net-mvc,C#,Javascript,Asp.net Mvc,我想将它们提交到一个编辑操作,编辑操作将通过项数组并添加两个字段 我的编辑操作如下所示: <div class="fields"> <select name="items[1368034980308][0]" id="items[1368034980308][0]"> <option value="1">Book</option> <option value="2">Brush</option> </select>

我想将它们提交到一个编辑操作,编辑操作将通过
数组并添加两个字段

我的编辑操作如下所示:

<div class="fields">
<select name="items[1368034980308][0]" id="items[1368034980308][0]">
<option value="1">Book</option>
<option value="2">Brush</option>
</select>

<input type="text" name="items[1368034980308][1]" id="softwarePerAsset[1368034980308][1]">
</div>
[HttpPost]
public ActionResult Edit(FormCollection col)
{
 string json = JSONHelper.ToJSON(col);
 return View();
}
我已在此操作上设置了断点,但
items
数组为空,我只能通过
FormCollection col
变量访问字段


有没有什么东西是我缺少的,
数组设置不正确。

Json来解救我。我使用本博客()中的一个想法重新设计了表单,尤其是带有非顺序索引的部分,因为我使用时间戳添加它们:

[HttpPost]
public ActionResult Edit(FormCollection col, string[,] items)
{
    return View();
}
json
字符串的示例如下所示:

<div class="fields">
<select name="items[1368034980308][0]" id="items[1368034980308][0]">
<option value="1">Book</option>
<option value="2">Brush</option>
</select>

<input type="text" name="items[1368034980308][1]" id="softwarePerAsset[1368034980308][1]">
</div>
[HttpPost]
public ActionResult Edit(FormCollection col)
{
 string json = JSONHelper.ToJSON(col);
 return View();
}
我必须创建一个ToJSON扩展才能检索值,否则只能检索名称

{ "btnSubmit" : "Submit",
  "items.Index" : "1,2,1368212161686,1368212162374,1368212162966,1368212163750",
  "items[1368212161686].name" : "1",
  "items[1368212161686].serial" : "",
  "items[1368212162374].name" : "2",
  "items[1368212162374].serial" : "",
  "items[1368212162966].name" : "1",
  "items[1368212162966].serial" : "98765",
  "items[1368212163750].name" : "2",
  "items[1368212163750].serial" : "43210",
  "items[1].name" : "1",
  "items[1].serial" : "12345",
  "items[2].name" : "2",
  "items[2].serial" : "67890"
}
公共静态类JSONHelper
{
公共静态字符串ToJSON(this System.Web.Mvc.FormCollection)
{
var list=newdictionary();
foreach(collection.Keys中的字符串键)
{
列表.添加(键,集合[键]);
}
返回新的System.Web.Script.Serialization.JavaScriptSerializer().Serialize(列表);
}
}

如果你投了反对票,请注意并说明原因。谢谢。这是我第一次看到这个。通常,要获取表单中的数组,只需在数组和输入的名称后添加一个空[]。我认为您最好的选择是使用jQuery用数组构建JSON,然后在帖子中发送JSON。我的解决方案发布在下面。
public static class JSONHelper
    {
        public static string ToJSON(this System.Web.Mvc.FormCollection collection)
        {
            var list = new Dictionary<string, string>();
            foreach (string key in collection.Keys)
            {
                list.Add(key, collection[key]);
            }
            return new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(list);
        }
    }