无法访问在文本中的代码隐藏中创建的 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 源代码并且一切都在那里,所以...... 有什么想法吗?

我尝试了以下方法:

  1. 在创建控件的字符串中添加了 runat="server",但当然,它不起作用,它只是在 HTML 中添加了文本 runat="server">

  2. Request.Form["txtMaterial">
  3. ] 或 Request["txtMaterial"] 找不到任何内容

  4. Page.Controls.Find("txtMaterial"( 返回 null

  5. 当我这样做时,this.from1.Controls.Count 它只检索我在 for 语句中添加的 210 个控件中的 11 个控件,如果像这样检索它们.from1.Controls[2],那些由 asp.net 引擎创建的不相关的 html 标记

  6. Page.Controls.Count 仅检索 5 个控件

这些控件在表格内,不知道它有什么关系,所以,你有什么想法吗,距离我上次使用 asp.net 已经有一段时间了,但请记住这是可能的,请让我知道你的想法,

无法访问在文本中的代码隐藏中创建的 HTML 输入控件

尝试使用 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");
}