我有一个ASP.NET Web应用程序,每当用户从特定下拉列表中选择一个项目时,许多控件都会相应地更新,例如标签将被重命名,文本框将更改其ID等。为此我正在使用jquery。
根据用户选择的内容给文本框一个新的id后,我想将这些文本框上输入的值传递给一个方法,我尝试Request.Form[controlid]
然后返回null
。我认为这是因为我正在使用asp.net控件,所以我决定使用jquery动态创建文本框。但是它仍然会返回null。
我也尝试过这样的事情:
TextBox textBox = Page.FindControl(controlid) as TextBox
textBox.Text;
然而它仍会归还null
。
有什么想法吗?
答案 0 :(得分:0)
Page.FindControl只在页面中直接查找控件,它不是递归的。如果您在Panel或其他控件中有控件,它将无效。
见这篇文章:
答案 1 :(得分:0)
您需要使用Request.Form [controlname]而不是controlid。
服务器端FindControl不起作用,因为它只识别服务器端已存在的控件。
答案 2 :(得分:0)
提交表单时,name
属性是Request.Form中的键,如此Request.Form [“controlname”]
因为您使用javascript动态更改客户端上的文本框,所以ASP.NET将无法使用Page.FindControl()找到它们。
在客户端,您将拥有这样的文本框:
<input type="textbox" id="t1" name="t1name" />
此值将以Request.Form["t1name"]
答案 3 :(得分:0)
您需要添加属性
runat="server"
在您的控件上,在.aspx页面上。
然后在CodeBehind上使用[ControlName] .Text查找与您的控件对应的当前文本。