1

ASP.NetMVC4には以下のようなコードがあります。そして私はRazorエンジンを使用しています。

@{
    string sDefaultEnvironId = string.Empty;

} 
<script language="javascript" type="text/javascript" >
    function changeHd() {
        $("#hdSelEnvironmentId").val("1");
    }
</script>
<input type="button" value="ChangeHD" onclick="changeHd();" />
@Html.Hidden("hdSelEnvironmentId", sDefaultEnvironId)

hdSelEnvironmentIdこのビューに初めてアクセスするとき、非表示フィールドの値は空です。1その後、ボタンをクリックした後に変更されましたChangeHD。しかし、を押した後F5、隠しフィールドの値hdSelEnvironmentIdはまだです。私は1、の代わりに最初の空の値でそれを期待していました1。誰かが私がそれを理解するのを手伝ってくれる?私はそれを理解することができない。FirefoxとFirebugを使用しています。ありがとうございます。

4

2 に答える 2

2

編集 Andreas here が発見したautocomplete=offように、入力に属性を追加することでこの動作を削除できます。

@Html.Hidden("hdSelEnvironmentId", sDefaultEnvironId, new { autocomplete = "off" })

この効果はキャッシュによるものではありません。これは Firefox の機能 (バグ?) であり、ページを更新すると、ページの入力がサーバーから再ロードされないように見えます。

  • Chrome または IE で同じことを試すと、値が空にリセットされることがわかります。
  • Firefox でキャッシュをクリアしても、値がまだリセットされていないことに気付くでしょう。

したがって、回避策があるかどうかはわかりませんが、この問題は Firefox に限定されているようです。

于 2012-11-23T05:46:03.930 に答える
1

に設定する代わりに

 @{
    string sDefaultEnvironId = string.Empty;

}

JavaScript で初期化するだけです。

 $(document).ready(function(){
     $("#hdSelEnvironmentId").val() = "";
    });
    function changeHd() {
            $("#hdSelEnvironmentId").val() = "";   
            $("#hdSelEnvironmentId").val("1");
        }

これが役立つと思います..ドキュメントが再度読み込まれるときにページを更新しても、値は空に設定され、ボタンをクリックすると1に設定されます

于 2012-11-23T13:28:28.650 に答える