提问者:小点点

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


我有一个aspx页面并添加了一个文字控件:

<asp:Literal runat="server" ID="ControlLiteral"></asp:Literal>

然后,在codebehind中,我使用for语句来大规模创建控件,其思想如下所示:

ControlLiteral.Text = @"<input  id=""txtMaterial1"" type=""text"" value=""escribe un valor"" disabled=""disabled"" onclick=""somefunction(this)"" style=""width:250px;"" />

然后我想在codebehind中的submit按钮之后获取值,但问题是我找不到它们,我开始认为codebehind不知道那些控件,尽管我检查了HTML源代码,所有的东西都在那里,所以...有什么想法吗?

我尝试了以下方法:

>

  • 在创建控件的字符串中添加了runat=“server”,但当然,这不起作用,它只是在html中添加了文本runat=“server”

    Request.Form[“TXTMaterial”]或Request[“TXTMaterial”]未找到任何内容

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

    当我这样做时,this.from1.controls.count只检索我在for语句中添加的210个控件中的11个控件,如果这样检索它们,this.from1.controls[2]则是由ASP.NET引擎创建的那些不相关的html标记

    page.controls.count仅检索5个控件

    那些控件在一个表中,不知道它有什么关系,所以,你有什么想法吗?我上次使用ASP.NET已经有一段时间了,但请记住这是可能的,请告诉我你的想法,


  • 共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");
    }