C# 获取具有新分配ID的asp.net控件的值

C# 获取具有新分配ID的asp.net控件的值,c#,jquery,asp.net,controls,C#,Jquery,Asp.net,Controls,我有一个ASP.NET web应用程序,每当用户从特定的下拉列表中选择一个项目时,许多控件都会相应地更新,例如标签会被重命名,文本框的id会被更改等等。为此,我使用jquery 根据用户的选择给文本框一个新的id后,我想将这些文本框上输入的值传递给一个方法,我尝试执行Request.Form[controlid],但它返回null。我认为这是因为我使用的是asp.net控件,所以我决定使用jquery动态创建文本框。但是它仍然会返回null 我还试着做一些类似的事情: TextBox textB

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

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

我还试着做一些类似的事情:

TextBox textBox = Page.FindControl(controlid) as TextBox

textBox.Text;
但是,它仍然会返回我
null


有什么想法吗?

页面。FindControl仅在页面中直接查找控件,它不是递归的。如果面板或其他控件中有控件,则该控件将无法工作

见此帖:


您需要使用Request.Form[controlname]而不是controlid


服务器端FindControl无法工作,因为它只能识别服务器端已经存在的控件。

提交表单时,请求中的键是
name
属性。表单与此请求类似。表单[“controlname”] 由于您正在使用javascript动态更改客户端上的文本框,ASP.NET将无法使用Page.FindControl()找到它们。 在客户端,您将有如下文本框:

<input type="textbox" id="t1" name="t1name" />


该属性的值将作为
请求提供。表单[“t1name”]
您需要添加该属性

runat="server"
在控件的.aspx页上


然后使用[ControlName]。CodeBehind上的文本查找与控件对应的当前文本。

动态更改服务器控件ID的原因是什么?为什么需要更改控件ID?请详细说明并提供您正在使用的一些代码示例。