gpt4 book ai didi

C# html 表单元素数组

转载 作者:行者123 更新时间:2023-11-28 09:09:59 25 4
gpt4 key购买 nike

@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<div id="elem">
<div class="fields">
<select name="items[1][0]" id="items[1][0]">
<option value="1">Book</option>
<option value="2">Brush</option>
</select>&nbsp;&nbsp;
<input type="text" value="1" name="items[1][1]" id="items[1][1]">&nbsp;&nbsp;
<a id="test" href="#">Remove Item</a>
</div>
</div>
</div><a href="#" id="addElem">Add Item</a></div>
<br />
<input type="submit" name="name" value="Submit" />
}

基本上,它有一组两个字段:名称字段和序列字段,但在二维数组中定义。 Add Item 链接的工作方式是,当用户单击时,它会添加一组新字段,其 id 为当前时间 var new_id = new Date().getTime() ; 使用 JavaScript。例如,新的字段集将是:

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

我想将它们提交到编辑操作,其中编辑操作将遍历 items 数组并添加两个字段。

我的编辑操作如下所示:

[HttpPost]
public ActionResult Edit(FormCollection col, string[,] items)
{
return View();
}

我已在此操作上设置了断点,但 items 数组为空,我只能通过 FormCollection col 变量访问字段。

我是否缺少某些内容,导致 items 数组未正确设置。

最佳答案

Json 来救援。我使用此博客 ( http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx ) 的想法重新设计了表单,尤其是带有非顺序索引的部分,因为我使用时间戳添加它们:

<div class="fields">
<input type="hidden" name="items.Index" value="1" />
<select name="items[1].name" id="items[1].name">
<option value="1">Visio</option>
<option value="2">Painter</option>
</select>&nbsp;&nbsp;
<input type="text" name="items[1].serial" id="items[1].serial" />&nbsp;&nbsp;
<a id="test" href="#">Remove Item</a>
</div>

在我的 Controller 中,我将 FormCollection 变量序列化为 json,这更容易操作:

[HttpPost]
public ActionResult Edit(FormCollection col)
{
string json = JSONHelper.ToJSON(col);
return View();
}

json 字符串的示例如下所示:

{ "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"
}

我必须创建一个 ToJSON 扩展才能检索值,否则只能检索名称

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);
}
}

关于C# html 表单元素数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16447075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com