我在设置 TextBox 的 Text 属性时遇到问题。这是代码的一部分:
protected void Page_Load(object sender, EventArgs e)
{
...
if (!Page.IsPostBack)
{
string termRequest = Request["term"];
if (termRequest != "*:*")
{
TB_MotCle.Text = termRequest;
}
}
...
}
所以我只是想从 URL 中获取一个参数并在我的 TextBox 中显示该值。我有一个按钮可以验证页面并最终使用参数(包括“术语”)重定向到同一页面。
protected void BTN_Rechercher_Click(object sender, EventArgs e)
{
...
if (string.IsNullOrEmpty(TB_MotCle.Text))
{
sb.Append("?term=*:*");
}
else
{
sb.Append(string.Concat("?term=", HttpUtility.UrlEncode(TB_MotCle.Text)));
}
...
Response.Redirect(sb.ToString());
}
因此,重定向调用没有 PostBack 的页面,调用 !Page.IsPostBack 中的第一个代码,我的 TextBox 获取新值。一切安好。
问题是:如果我使用导航器中的 History Back 功能,则使用旧的“term”值调用上一页,这很正常,该页面不是回发,我的代码进入 TB_MotCle.Text = ... ; (我在调试模式下检查),但是当页面刷新时,我仍然从历史记录的下一页获取值。
我不确定这是否清楚,所以会发生什么:我在我的页面上搜索“test1”,单击提交-> 回发-> 使用我的 url 中的值重定向-> 页面显示“test1”。然后我对“test2”做同样的事情,页面刷新,我在文本框中得到“test2”。但是,如果我按回导航器,页面的 URL 包含“test1”(这是正常的),我将该值设置为 PageLoad 中的 TextBox 为“test1”,但我仍然在我的 TextBox 中看到“test2” .
我试图禁用 ViewState 但它不起作用。我能做些什么 ?