如何获取页面init中的文本框值?

问题描述:

我正在使用asp.net 2.0如何获取页面init中的文本框值?

我设置了一个隐藏文本框从javascript和回发,我想检查存储在页面init事件文本框中的值。这是我试过

string t = Request.Form["currentMode"].ToString(); 

但我得到一个错误,说“对象引用未设置为对象的实例”。

任何想法?asp。

初始化是页面生命周期,其中一切都被初始化。你不能强调任何事情都是可行的。为了做到这一点,你必须使用Page_Load事件...

+0

我添加了一个Page_Load事件找不到任何其他解决方案 – Amit 2010-06-02 10:53:13

+0

您也不应该使用Request.Form集合。您应该使用服务器ID来定义文本框,并在代码中使用该ID来访问文本属性。例如:然后在代码中通过以下方式检索文本:NameTextBox.Text – Koen 2010-06-02 14:10:25

在init中,回发值尚未加载到控件中,理论上你可以从Request.Form变量中获取值,但它们被命名为作为控件的客户端ID。如果您的控件位于像contentplaceholder或detailsview之类的任何容器中,则它们将在ID上添加各种guff。例如ctl00$cphContentBody$txtMyTextbox可能是服务器端ID为txtMyTextbox的控件的ID。

+0

嘿,感谢您的信息,但是我无法在不添加页面加载事件的情况下利用它 – Amit 2010-06-02 10:55:09

+1

这就是一个奇怪的反应。页面加载事件是访问控件属性的标准自然地点。事实上你试图在init事件中访问这些值,这让我认为你有一个很好的理由这样做。当然,我错了。 – 2010-06-02 14:32:37

我在尝试从动态创建的表单(在回发的Init()事件期间组装)中构建 - >提交 - >检索值时碰到过这个问题。正如Ben所述,您可以使用Request.Form集合手动提取页面控件的值,使用所需控件的UniqueID(其中将包含Ben正在讨论的“guff”)。

当然,这只是在从视图状态(在LoadComplete之前)填充页面控件的值之前尝试发现它的值时才是必需的。否则,您可以简单地执行TextBox1.Text之类的操作。