【问题标题】:get textbox Array from asp.net mvc generates page从 asp.net mvc 获取文本框数组生成页面
【发布时间】:2010-09-07 09:01:19
【问题描述】:

我的问题是我有一个动态循环,我在其中生成 5 个文本框,现在我需要获取每个索引的数据,因为我想通过数组发送给控制器。谁能告诉我如何从文本框数组中获取值。所有文本框都具有相同的名称和 ID,但它们有一个索引。

【问题讨论】:

    标签: jquery asp.net-mvc asp.net-mvc-2


    【解决方案1】:

    您可以在控制器中迭代 HttpContext.Request.Form.AllKeys,例如:

    foreach(var key in HttpContext.Request.Form.AllKeys) {
        if(key.StartsWith("textboxname")) { // key will look like textboxname[1]
            // value is in
            var val = HttpContext.Request.Form[key];
        }
    }
    

    【讨论】:

      【解决方案2】:

      只要跟着 the haacked explanation on binding to collections

      并以正确的方式创建您的输入 现在需要在客户端进一步解析它

      【讨论】:

        【解决方案3】:

        首先,您不应该有多个具有相同 ID 的元素。如果你愿意,它们都可以拥有相同的 CLASS。

        已更新以反映明确的要求。

        但是,要解决您的问题,您可以试试这个:

        $("#yourformID").bind("submit", function() {
           var groups = new Array();
        
           $("textarea").each(function(i, el) {
              name = $(el).attr("name");
              index = $(el).attr("index"); // Is 'index' an attr?
              if (groups[name] === undefined) {
                 groups[name] = new Array();
              }
              groups[name][index] = $(el).val();
           });
        
           // You can now insert the array as the value of the submit button...
           $(this).find("input[type=submit]").val(groups);
           return true;
        });
        

        我不确定你所说的“索引”是什么意思,但如果这是 textarea 上的一个属性,那么这应该会让你接近。

        当然,在服务器端,您需要分解数组的数组,但此时每个项目都应该很容易通过名称和索引来引用。

        祝你好运!

        【讨论】:

        • 他谈到了他的控制器,所以我想这不是客户端问题。
        • 他还标记了这个 jQuery。所以我认为是?
        • 我的问题是我的循环中不仅有一个文本框。每次循环通过时我都有 5 个文本文本框,我需要一个包含这 5 个值的数组,然后我需要这些数组的数组将它们传递给我的控制器。
        猜你喜欢
        • 1970-01-01
        • 2014-08-03
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多