2012-11-26 31 views
1

在我的Html頁面中,我創建了一個帶有javascript的循環中的幾個文本框。從內環路javascript創建的控制值沒有發佈到服務器

代碼片段:

var row = myTable.tBodies[0].insertRow(rowCount); 
var cell1 = row.insertCell(0); 
cell1.style.width = '40%'; 
var element1 = document.createElement("input"); 
element1.type = "text"; 
element1.className = 'textSub'; 
element1.id = 'txtOndNr' + rowNr; 
cell1.appendChild(element1); 

當我按下提交按鈕我似乎無法存取權限它們的值服務器端。我知道他們不是服務器控件等,但我希望通過request.form(「id」)來訪問它們。 另外,當我檢查螢火蟲,這些值不在後值(控件位於表單標籤內,這不是問題)。

有沒有人有我做錯了什麼想法?

額外的信息:ASP.NET 1.1,腳本位於ASCX

回答

0

我只是發現了ŧ它不是用於發送表單值的ID,而是NAME。如果我將element1.id = 'txtOndNr' + rowNr;更改爲element1.name = 'txtOndNr' + rowNr;,則可以使用Request.form(「txtOndNr0」)訪問這些值。

檢查螢火蟲HTTP POST請求

txtOndNr0 qsdf 
txtOndNr1 
txtOndNr2 qsdf 

對我來說,這看起來像一個稍微清晰的解決方案時,看起來是這樣。

4

Asp.net 密切留意國家控制的狀態的只有被asp.net創建。您需要使用hidden field to store the state of newly created controls,稍後訪問服務器上的隱藏字段以查看狀態/數據。

在HTML

<input type="hidden" runat="server" id="hdnFornewlyCreated" /> 

在javascript中

document.getElementById('<%= hdnFornewlyCreated.ClientID %>').value = "stringcontainState"; 

在後面的代碼

string state = hdnFornewlyCreated.Value; // Use this to extract state and data 
+0

嗯我希望不必採取這條路線,但它看起來像唯一可能的方式。我的問題是,用戶可以在該頁面上創建任意數量的文本框。因此,我將不得不在回發之前將所有txtbox值存儲在1 hdn中(因爲我無法預測有多少txtboxes將不能提供正確數量的hdn創建的服務器端)。並且字符串處理服務器端的hdn結果。 – BBQ

+0

您必須存儲在單個隱藏字段中創建的所有新文本框的所有數據。您所要做的就是以可在服務器端爲客戶端上創建的每個元素解釋和提取的方式來格式化數據。 – Adil

相關問題