[英]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.