1

在我的 Html 页面中,我使用 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

4

2 回答 2

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
于 2012-11-26T08:58:50.950 回答
0

我刚刚发现用于发送表单值的不是 ID,而是 NAME。如果我更改element1.id = 'txtOndNr' + rowNr;为,element1.name = 'txtOndNr' + rowNr;我可以使用 Request.form("txtOndNr0") 访问这些值。

检查 firebug http post 请求时看起来像这样

txtOndNr0   qsdf
txtOndNr1   
txtOndNr2   qsdf

对我来说,这看起来像是一个更清洁的解决方案。

于 2012-11-26T09:31:30.420 回答