我在表单上有几个"ASP:TextBox"控件(大约20个).
加载表单时,将从数据库中填充文本框.
用户可以更改填充的值,当他们提交表单时,我将发布到服务器的值并有条件地保存它们(由某些业务逻辑确定).
除了1个文本框之外的所有文本框都按预期工作.
在回发时,奇数框输出不包含用户在框中键入的更新值.
调试应用程序时,很明显myTextBox.Text
反映了旧的预填充值,而不是新的用户提供的值.
每个其他框都正确显示其各自的用户提供的值.
我确实找到了解决方法.
我的解决方案是基本上从Request.Form
对象中提取文本框的值: Request.Form[myTextBox.UniqueID]
,它确实包含用户提供的值.
可能会发生什么,这里?
正如我所提到的,其他文本框接收用户提供的值就好了,这个特殊问题的文本框没有任何与之关联的逻辑 - 只需要获取值并保存它.
这个文本框和其他文本框之间的主要区别在于这是一个多行框(用于输入注释),我认为它在ASP.NET中呈现为HTML"textarea"标记而不是"输入"标记.
你最初只是在加载数据的时候!Page.IsPostBack?此外,是否为文本框启用了视图状态?
这种情况一直发生在我身上.
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { // populate text boxes from database } }