繁体   English   中英

无法访问文字后面的代码中创建的HTML输入控件

[英]Can't access HTML input controls created in code behind in a literal

我有一个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”]或Request [“ txtMaterial”]找不到任何内容

  3. Page.Controls.Find(“ txtMaterial”)返回null

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

  5. 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");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM