我正在嘗試使用Asp.net 3.5/IIS執行以下操作:JavaScript Asp.net重複控件
具有頂級可重複表單的Web表單。所以基本上是一個Order-> Products-> ProductsParts類的scenerio。訂單隻有一個。產品是可重複的。每個產品都有可重複的產品部件。產品和產品部分有一大堆領域,所以我不能使用網格。
因此,我在每個產品部件的每個產品添加/刪除按鈕中添加/刪除產品按鈕。
這是我的要求。在使用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);
}
我需要name屬性指定爲陣列,這樣我可以在的Request.Form
幫助,請閱讀!
強大的文本修復不更新不工作IDS:
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);
這種類型的東西應該工作。如果您使用Request.Form,您將有權訪問所有帶有回傳名稱的輸入。你所遇到的問題是命名,但是如果沒有看到你的html,我不能幫你太多。 –
Request.Form沒有動態創建的控件。我檢查了每個屬性,包括HtmlNameValue對或其他東西。但是我在其他地方找到的解決方案基本上是使用jquery來序列化表單並進行回發。我檢查了哪些瀏覽器發佈,它沒有任何動態控制。所以,基本上你不能使用ASP.Nets提交表單機制,它肯定會從視圖狀態獲取信息。我必須嘗試禁用視圖狀態。我會張貼我的發現 – ASR