当前位置:  开发笔记 > 后端 > 正文

提交具有相同名称的表单元素

如何解决《提交具有相同名称的表单元素》经验,为你挑选了3个好方法。

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

提交的表单可能如下所示


   

   

   

基本上,在input和选择之间的块可以重复无限次.当我提交给控制器时,我正在使用FormCollection form访问表单元素.从那里我不确定如何访问已提交的项目.我想过使用for循环,然后通过类似[[Amount]] [i]之类的东西来访问它们,但显然这不起作用.

我是否以正确的方式解决这个问题?如果有的话,是否有人对此如何运作有任何建议?

提前致谢.



1> Akos Lukacs..:

旧问题,但仍然......您可以通过调用Request.Form.GetValues或者将发布的值作为数组获取Request.QueryString.GetValues.例如:

string[] amounts = Request.Form.GetValues("Amount");

并且amounts数组将包含正确的值,因此您可以发布包含comas,dots等的值,并且不用担心拆分/解析它.

当然,如果您正在运行MVC,请使用modelbinder来执行此操作.但是如果你使用webforms,通用处理程序等,你可以使用它...



2> veggerby..:

查看模型绑定到列表.你的Action方法应该是:

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

但是,这将使您需要"链接"项目.或者创建一个"Item"类:

public class Item {
    public string Amount { get; set; }
    public int Item { get; set; }
}

public ActionResult MyAction(IList items){
   // ...
}

你的标记应该是:



   


   

等等...



3> Spencer Rupo..:

我相信如果您有多个名为Amount的字段,则值将以逗号分隔.

要访问每个只是尝试:

string[] amounts = Request.Form["Amount"].Split(new char[] { ',' });

但请记住,输入不会在提交时清除,因此如果有人在文本框中输入逗号,则会导致问题.

因此我建议给它们编号.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有