无法访问在文本中的代码隐藏中创建的 HTML 输入控件
本文关键字:创建 HTML 输入 控件 隐藏 代码 文本 访问 | 更新日期: 2023-09-27 18:34:32
我有一个aspx页面并添加了一个文本控件:
<asp:Literal runat="server" ID="ControlLiteral"></asp:Literal>
然后,在代码隐藏中,我使用 for 句子来大规模创建控件,其想法是这样的:
ControlLiteral.Text = @"<input id=""txtMaterial1"" type=""text"" value=""escribe un valor"" disabled=""disabled"" onclick=""somefunction(this)"" style=""width:250px;"" />
然后我想在代码隐藏中的提交按钮后获取值,但问题是我找不到它们,我开始认为代码隐藏不知道这些控件,即使我检查了 HTML 源代码并且一切都在那里,所以...... 有什么想法吗?
我尝试了以下方法:
在创建控件的字符串中添加了 runat="server",但当然,它不起作用,它只是在 HTML 中添加了文本 runat="server">
Request.Form["txtMaterial">] 或 Request["txtMaterial"] 找不到任何内容
Page.Controls.Find("txtMaterial"( 返回 null
当我这样做时,this.from1.Controls.Count 它只检索我在 for 语句中添加的 210 个控件中的 11 个控件,如果像这样检索它们.from1.Controls[2],那些由 asp.net 引擎创建的不相关的 html 标记
Page.Controls.Count 仅检索 5 个控件
这些控件在表格内,不知道它有什么关系,所以,你有什么想法吗,距离我上次使用 asp.net 已经有一段时间了,但请记住这是可能的,请让我知道你的想法,
尝试使用 submit
调用 javascript 中的函数。
__doPostBack(controlid,json.stringify())
例:
$scope.btn_generatepdf = function () {
var myJSON = '';
for (var i = 0; i < $scope.elements.length; i++) {
myJSON = myJSON + ($scope.elements[i].value) + '|';
}
alert(myJSON);
__doPostBack('btn_generatepdf1', myJSON);
}
代码隐藏page_load:
if (page.ispostback)
{
string parameter = Request["__EVENTARGUMENT"];
string[] allParams = parameter.Split('|');
string val = Request.Params.Get("__EVENTTARGET");
}