ASP.NET用户控件 - 无法将客户端(JavaScript)更改后的值重新控制

时间:2008-11-06 10:10:11

标签: asp.net user-controls postback

好人和女孩,这是我的问题:

我已经构建了一个自定义控件,它使用文本框向用户显示数据。

当用户与控件互动时,该文本框的值会随客户端javascript 而改变。

我的页面上也有一个按钮。当用户单击按钮时,我想从自定义控件(也就是文本框)中获取值,并在其他地方使用它。

因此,在按钮的onClick事件中,我执行以下操作:

this.myLabel.Text = this.customControl.Value;

问题是自定义控件没有可用的新文本框值。在自定义控件中,文本框为空。但是,我可以在Request.Form集合中看到正确的值。

我在这里做错了吗?或者我应该从Request.Form阅读?!

3 个答案:

答案 0 :(得分:2)

有趣的是,我没有意识到,只有TextBox没有从viewstate更新。

当我在我的网站上拉这样的特技时,我通常会设置asp:HiddenFields,我将数据转储到javascript(得爱jQuery),并且我从回发中读取值。

让我发现事情更清洁。

答案 1 :(得分:1)

啊哈哈!我已经解决了自己的问题!

因为我在文本框控件上设置了Readonly =“True”,所以ASP.NET没有从回发中获取它的值。

相反,我应该在用户控件构建期间手动将readonly属性添加到文本框中。

例如

this.textBox.Attributes.Add("readonly", "readonly");

答案 2 :(得分:0)

奇怪你自己回答了! 事实上,我之前遇到过这种麻烦,并且花了我一些时间,直到我在视觉工作室文档中找到描述原因的说明,你可以在这里阅读http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.textbox.readonly.aspx在“重要说明”部分。