【发布时间】:2012-05-10 23:12:55
【问题描述】:
我在网页的页面加载上有一个动态构建的表格,其中包含用户可以更改默认值的文本框。对用户输入值也有一些验证(例如,输入不能小于零)。当用户提交表格时,只存储有效的输入,并刷新页面,在重建时提取存储的值以填充表格。由于某些原因,即使它们不是持久的,在提交和重新加载页面后,文本框仍会显示无效输入,并且标签不会发生此问题。
文本框控件中是否有专门内置的内容导致此问题?是否有存储状态的地方,也许(我尝试将ViewState 标志设置为false)?这只是页面生命周期的一部分吗?
文本框内置在从 Page_Load 事件调用的方法中
void Page_Load(object sender, EventArgs e)
{
//page initialization...
ValidateData(); //This is where the current data is verified, and stored if valid
BuildTable(); //This takes that stored value for the text
}
void BuildTable
{
tbTable = new Table();
tbRow = new TableRow();
tbCell = new TableCell();
TextBox tb = new TextBox();
tb.text = some stored value;
tbCell.Controls.Add(tb);
tbRow.Cells.Add(tbCell);
tbTable.Rows.Add(tbRow);
divFromPage.Controls.add(tbTable);
}
如果需要更多信息来帮助解决此问题,请告诉我。
【问题讨论】:
-
那么,您的控件在提交时仍然具有它们所具有的值吗?您需要在 Page_Load 事件中将它们设为空白
-
我该怎么做?它们已经是动态的,所以默认情况下它们在页面加载中不应该是空白的吗?
-
jas,我设法重现了您的确切问题(huray :))。我会调查这种奇怪的行为并回复你。出于好奇:您是否考虑过使用 asp:repeater?该组件通常用于此类情况。通常情况下:选择痛苦最小的路径:)
-
编辑了我的答案,让我知道这对你是否有意义:)(顺便说一句,大约 30 分钟后)
-
Response.Redirect 对我不起作用,因为用户输入仅在页面的特定实例的生命周期内持续,并且在我重定向时丢失。随机 id 有效,但在我看来,如果这是文本框的常见行为,这应该是一个已解决的问题,不是吗?
标签: asp.net viewstate page-lifecycle