gpt4 book ai didi

asp.net-mvc - 提交同名的表单元素

转载 作者:行者123 更新时间:2023-12-04 02:39:28 30 4
gpt4 key购买 nike

我有一个表单,它允许用户使用 JQuery(使用 .clone)创建额外的“行”,以便他们可以决定需要提交多少相同的信息。我的问题是我无法弄清楚如何在我的 Controller 中访问这些表单项。

正在提交的表单可能如下所示

<input type="text" name="Amount" id="Amount">
<select name="Item">
<option value="1">Item 1"</option>
<option value="2">Item 2"</option>
<option value="3">Item 3"</option>
</select>
<input type="text" name="Amount" id="Amount">
<select name="Item">
<option value="1">Item 1"</option>
<option value="2">Item 2"</option>
<option value="3">Item 3"</option>
</select>
<input type="text" name="Amount" id="Amount">
<select name="Item">
<option value="1">Item 1"</option>
<option value="2">Item 2"</option>
<option value="3">Item 3"</option>
</select>

基本上, input 之间的 block 并且选择可以重复无数次。当我提交给 Controller 时,我正在使用 FormCollection form访问表单元素。从那里我不确定如何访问已提交的项目。我曾想过使用 for 循环,然后通过类似 form["Amount"][i] 的方式访问它们,但显然这行不通。

我是否以正确的方式进行此操作,如果是这样,是否有人对这可能如何工作有任何建议?

提前致谢。

最佳答案

查看 Model Binding To A List .你的 Action 方法应该是:

public ActionResult MyAction(string[] Amount, int[] Item){
// ...
}

但是,这将使您需要“链接”这些项目。或者创建一个“项目”类:
public class Item {
public string Amount { get; set; }
public int Item { get; set; }
}


public ActionResult MyAction(IList<Item> items){
// ...
}

你的标记应该是:
<input type="hidden" name="items.Index" value="0" />
<input type="text" name="items[0].Amount" id="items[0].Amount">
<select name="items[0].Item">
<option value="1">Item 1"</option>
<option value="2">Item 2"</option>
<option value="3">Item 3"</option>
</select>
<input type="hidden" name="items.Index" value="1" />
<input type="text" name="items[1].Amount" id="items[1].Amount">
<select name="items[1].Item">
<option value="1">Item 1"</option>
<option value="2">Item 2"</option>
<option value="3">Item 3"</option>
</select>

ETC...

关于asp.net-mvc - 提交同名的表单元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/437955/

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