簡體   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