0

我有一个 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

4 回答 4

0

You need to add the attribute

runat="server"

on your control, on the .aspx page.

Then use [ControlName].Text on the CodeBehind to find the current text corresponding to your control.

于 2013-03-27T14:21:43.177 回答
0

Page.FindControl 只在页面中直接查找控件,它不是递归的。如果您在面板或其他一些控件中有控件,它将不起作用。

看到这个帖子:

在 ASP.NET 中查找控件的更好方法

于 2013-03-27T14:18:29.960 回答
0

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

服务器端 FindControl 将不起作用,因为它只能识别服务器端已经存在的控件。

于 2013-03-27T14:19:01.977 回答
0

提交表单时,它是nameRequest.Form 中的关键属性,像这样 Request.Form["controlname"] 因为您使用 javascript 在客户端动态更改文本框,所以 ASP.NET 不会能够使用 Page.FindControl() 找到它们。在客户端,您将拥有如下文本框:

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

this 的值将作为Request.Form["t1name"]

于 2013-03-27T14:20:03.057 回答