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」で同じことを行い、ページを更新すると、TextBox に「test2」が表示されます。しかし、ナビゲーターを押し戻すと、ページの URL に「test1」が含まれています (これは正常です)。その値を PageLoad の TextBox に「test1」に設定しましたが、TextBox に「test2」が表示されます。 .
ViewState を無効にしようとしましたが、うまくいきませんでした。私に何ができる ?