4

これは簡単なコードです:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        txt.Text = "Original";
    }
}
  1. 最初のロード。テキストボックスの状態は「オリジナル」です。

  2. 手動で、値を「オリジナルではありません」に変更します。

  3. F5を押します。この線:

    txt.Text = "オリジナル";

実行されますが、入力値は「オリジナルではありません」のままです

しかし、私がアドレスバーに入るとヒットしたとき。値が「オリジナル」に変更されます。

アドレスの末尾に '#' が含まれている場合 (jquery クリックを使用..)

その後、アドレスバーを押しても、値 は「オリジナルではありません」のままです

4

4 に答える 4

12

ASP.NETページを更新(F5)すると、最後に実行されたアクションが繰り返されます。したがって、あなたの場合、最後にテキストボックスの値を変更した場合は、更新するとテキストボックスがその値に再度設定されます。

ただし、アドレスバーで「Enter」を押すと、ブラウザはすべてを破棄して、まったく新しいページに移動するように指示されます。

「ポストバック」とは、ページを自分自身に送信(投稿)することを意味ます。初めてページをロードするとき、IsPostBackはfalseです。これは、ページを要求しているだけで、何も送信していないためです。ただし、ASP.NETページで実行するすべてのアクション(一度そこに到達すると)は、同じページに非表示のフォームを送信します。IsPostBackは、これらの後続の要求に対してtrueです。

最後に、アドレスバーに「#」がある場合、そのURLでEnterキーを押しても、ページはリロードされません。これは、#がアンカーを意味するためです。すでに「ページx」にアクセスして「ページx#something」に移動しようとすると、ページはリロードされません。ブラウザにそのまま残り、最大でアンカーポイントにジャンプしますが、リロードされません。

于 2009-09-04T05:50:11.560 に答える
2

実は昨日、IE(7) と Firefox(3.5) の違いに気付きました! いくつかの入力フィールドを持つ html でフォームを作成し、IE を使用して更新すると、すべてのフィールドが空白 (既定の状態) に戻りましたが、FireFox では、更新によってページがリロードされました (私が行ったコードの変更を含む)。フィールドに書き込んだ値!開発/テスト時に非常に便利なので、毎回テスト データを書き直す必要はありませんでした。

好奇心のために、先ほど ASP.NET で簡単なテストを作成しましたが、Firefox の場合と同じであることに気付きました: 更新ボタンを押すと変更された値が保持されますが、アドレス バーで Enter キーを押すと、に設定された元のテキストが再読み込みされPage_Loadます。しかし、IE では、どちらの場合も値が元にリセットされます。

さまざまなケース間の基本的な (ブラウザーに依存しない) 違いについては、Rex Mからの回答は非常に優れています。

于 2009-09-04T06:12:01.530 に答える
1

どのブラウザを使用していますか?一部のブラウザとプラグインは、さまざまな状況でフォーム設定を保持しようとします。

于 2009-09-04T05:51:04.320 に答える
-1

ASP.NET ページを更新 (F5) すると、最後に実行されたアクションが繰り返されます。したがって、あなたの場合、最後に行ったことがテキストボックスの値を変更した場合、更新するとテキストボックスがその値に再度設定されます。

いいえ、テキストボックスの値を変更した後にフォーム送信を発行しない限り、そうではありません。

于 2009-09-17T18:44:23.750 に答える