asp.net mvc发送jquery生成隐藏字段到控制器动作

时间:2014-02-28 05:26:16

标签: jquery asp.net-mvc

我已在网络表单上预加载隐藏字段。单击jquery按钮时,这些隐藏字段将成功发送到控制器

<input type ="hidden" class="serviceslist " value="1"/>
<input type ="hidden" class="serviceslist " value="2"/>

我点击 addmore 按钮添加其他隐藏字段。单击jquery按钮时,不会将这些隐藏字段发送到控制器。可能是什么问题?他们不在dom中吗?

<input type ="hidden" class="serviceslist " value="3"/>
<input type ="hidden" class="serviceslist " value="4"/>


  $('#addmoreservices').on('click', function () {
        var url = "/Quotation/AddmoreServices/";

        var serviceslist = $(".serviceslist ").serialize();        
        $.ajax({
            url: url,
            data: { serviceslist: serviceslist },
            cache: false,
            contenttype: 'application/json',
            dataType: "json",              
            type: "GET",
            success: function (data) {           

                return false;
            },
            error: function (reponse) {
                alert("error : " + reponse);
            }

这是我试图将一大堆隐藏字段(预加载和创建)发送到控制器的按钮代码。正在发送已预加载并且已创建的已被遗忘)

4 个答案:

答案 0 :(得分:1)

您正在动态添加元素,因此在设置单击处理程序时不会注册该元素。  因此,一旦创建了动态元素

,就会调用事件处理程序

您没有显示足够的代码,因此很难说出确切的解决方案,

答案 1 :(得分:0)

为字段添加唯一名称。不要反复使用相同的名称。

答案 2 :(得分:0)

如果您的输入有名称,则serialize()可以处理

<input type ="hidden" class="serviceslist " value="1" name="a" />

但如果您的所有输入名称都是“a”,则序列化结果为

a=1&a=2&a=3....

我认为这不是你想要的 也许你想要

1,2,3,4....

尝试使用

$(".serviceslist").map(function(){return $(this).val();}).get().join(",")

答案 3 :(得分:0)

尝试将'click'事件处理程序设为一个单独的js函数,如

$('#addmoreservices').on('click', addHandler)

var addHandler = function(){...};

然后在 addmore 按钮单击处理程序,将新输入添加到dom后,再次绑定addmoreservices按钮单击处理程序'addHandler'。这将包括'addHandler'函数中新创建的输入。