Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript Asp.net重复控件_Javascript_Jquery_Asp.net_Webforms - Fatal编程技术网

JavaScript Asp.net重复控件

JavaScript Asp.net重复控件,javascript,jquery,asp.net,webforms,Javascript,Jquery,Asp.net,Webforms,我正在尝试使用Asp.net 3.5/IIS执行以下操作 具有顶级可重复表单的web表单。所以基本上是一个订单->产品->产品的场景。秩序是唯一的。产品是可重复的。每个产品都有可重复使用的产品部件。产品和产品部分有一大堆字段,所以我不能使用网格 所以,我有产品的添加/删除按钮,在每个产品中有每个产品部件的添加/删除按钮 这是我的要求。在使用jquery/js进行了一些研究之后,我已经能够实现添加/删除。如何在服务器上捕获此数据?由于javascript正在添加和删除这些控件,它们不是服务器端的,

我正在尝试使用Asp.net 3.5/IIS执行以下操作

具有顶级可重复表单的web表单。所以基本上是一个订单->产品->产品的场景。秩序是唯一的。产品是可重复的。每个产品都有可重复使用的产品部件。产品和产品部分有一大堆字段,所以我不能使用网格

所以,我有产品的添加/删除按钮,在每个产品中有每个产品部件的添加/删除按钮

这是我的要求。在使用jquery/js进行了一些研究之后,我已经能够实现添加/删除。如何在服务器上捕获此数据?由于javascript正在添加和删除这些控件,它们不是服务器端的,我不知道如何正确分配名称属性。我正在尝试以下javascript,但它不起作用:

function onAddProperty(btnObject){
var previous = btnObject.prev('div');
var propertyCount = jquery.data(document.body, 'propertyCount');

var newDiv = previous.clone(true).find("*[name]").andSelf().each(function () { $(this).attr("name").replace(($(this).attr("name").match(/\[[0-9]+\]/), cntr)); }); ;

propertyCount++;
jquery.data(document.body, 'propertyCount', propertyCount);

//keep only one unit and remove rest
var children = newDiv.find('#pnlUnits > #pnlUnitRepeater');
var unitCount = children.length;
var first = children.first();
for (i = 1; i < unitCount; i++) {
    children[i].remove();
}

newDiv.id = "pnlPropertySlider_" + propertyCount;

newDiv.insertBefore(btnObject);
}
  var newDiv = previous.clone(true).find("input,select").each(function () {
    $(this).attr({
        'name': function () {
            var name = $(this).attr('name');
            if (!name) return '';
            return name.replace(/property\[[0-9]+\]/, 'property' + propertyCount);
        }
    });
}).end().insertBefore(btnObject);

问题如下所示:

$(this).attr("name").replace(($(this).attr("name").match(/\[[0-9]+\]/), cntr));
这句话没有任何作用。JavaScript中的字符串是不可变的,
.replace
仅返回替换内容的字符串

然后,您必须实际将
attr(“name”)
设置为具有替换值的新字符串:


如果看不到你的HTML,我就帮不上什么忙。

这种东西应该可以用。如果您使用Request.Form,您将可以访问回发时带有名称的所有输入。您遇到的问题是命名,但是如果不看到您的html.Request.Form没有动态创建的控件,我将无能为力。我检查了每个属性,包括HtmlNameValue对之类的。但我在其他地方找到的解决方案基本上是使用jquery序列化表单并进行回发。我甚至检查了浏览器发布的内容,但里面没有任何动态控件。所以,基本上您不能使用ASP.Nets提交表单机制,它肯定是从视图状态获取信息的。我必须尝试禁用视图状态。我将发布我的搜索结果以获得提示。我能够用下面的代码解决它。