我有一个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已经有一段时间了,但请记住这是可能的,请告诉我你的想法,
尝试使用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");
}