使用新分配的ID获取asp.net控件的值

时间:2013-03-27 14:10:28

标签: c# jquery asp.net controls

我有一个ASP.NET Web应用程序,每当用户从特定下拉列表中选择一个项目时,许多控件都会相应地更新,例如标签将被重命名,文本框将更改其ID等。为此我正在使用jquery。

根据用户选择的内容给文本框一个新的id后,我想将这些文本框上输入的值传递给一个方法,我尝试Request.Form[controlid]然后返回null 。我认为这是因为我正在使用asp.net控件,所以我决定使用jquery动态创建文本框。但是它仍然会返回null。

我也尝试过这样的事情:

TextBox textBox = Page.FindControl(controlid) as TextBox

textBox.Text;

然而它仍会归还null

有什么想法吗?

4 个答案:

答案 0 :(得分:0)

Page.FindControl只在页面中直接查找控件,它不是递归的。如果您在Panel或其他控件中有控件,它将无效。

见这篇文章:

Better way to find control in ASP.NET

答案 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查找与您的控件对应的当前文本。