2012-11-26 33 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

相关问题