[英]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源代碼並且所有內容都在那里所以...有什么想法嗎?
我嘗試了以下方法:
在創建控件的字符串中添加了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]這樣檢索它們,則這些不相關的html標記將由asp.net引擎
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.