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

时间:2014-12-16 19:11:42

标签: c# html asp.net dynamic-controls

我有一个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 =&#34;服务器&#34;在创建控件的字符串中,当然,它不起作用,它只是添加了文本runat =&#34; server&#34;在html中

  2. Request.Form [&#34; txtMaterial&#34;]或请求[&#34; txtMaterial&#34;]找不到任何内容

  3. Page.Controls.Find(&#34; txtMaterial&#34;)返回null

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

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

  6. 那些控件在一张桌子里面,不知道它有什么可做的,所以,你有什么想法吗,自从我上次使用asp.net以来已经有一段时间了但请记住这是可能的,请让我知道你的想法,

1 个答案:

答案 0 :(得分:-1)

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

codebehind page_load:

if (page.ispostback)
{
     string parameter = Request["__EVENTARGUMENT"];
     string[] allParams = parameter.Split('|');
     string val = Request.Params.Get("__EVENTTARGET");
}