1

次のコントローラーアクションがあります。

public ActionResult Details(string pk)
        {
            IEnumerable<ContentDetail> model = null;
            try
            {
                model = _content.Details(pk);
                if (model.Count() > 0)
                {
                    return PartialView(getView(pk) + "Details", model);
                }
            }
            catch (Exception e)
            {
                log(e);
            }
            return Content("No records found");
        }

私はこれを次のルーチンで呼び出します。

$.ajax({
        cache: false,
        url: "/Administration/" + table + "s/Details",
        data: { pk: partitionKey },
        dataType: 'html',
        success: function (responseText) {
            $('#detailData').html(responseText);
            $(".updatable")
                .change(function (e) {
                    var type = $(this).attr('id').split('_')[0];
                    updateField(table, $(this), type);
                });
            $('.dialogLink')
                .click(function () {
                    dialogClick(this);
                    return false;
                });
        },
        error: function (ajaxContext) {
            ajaxOnFailure(ajaxContext)
        }
    });

私が気付いたのは、コントローラーアクションの最初の行にブレークポイントを設定すると、ブレークポイントで停止していないように見えることがあるということです。結果がMVCによってキャッシュされている可能性はありますか?また、デバッグ中にこれが発生しないようにするにはどうすればよいですか?

4

2 に答える 2

0

OutputCacheコントローラ自体、または存在する場合はすべてのコントローラが継承する可能性のあるベースコントローラに設定されているバリエーションがないかどうかを確認します。

また、IEは物事をキャッシュするのが好きであり、これを軽減する唯一の方法は、開発者ウィンドウに対して実行し、キャッシュをクリアすることです(またはctrl+ shift+ del

呼び出しに追加cache:falseしてみて.ajax、それが何らかの関係があるかどうかを確認してください(jQueryは各呼び出しを一意にするタイムスタンプ変数を追加します)。気にしないでください、ちょうどあなたがそれが含まれていることに気づきました。ここで遅くなっているに違いありません-私がこのようなことを逃したとき、それは就寝時間であることを確認してください。

于 2012-04-29T04:35:07.533 に答える
0

フィドラーをロードして、リクエストがブラウザから戻ってくるかどうかを確認します。理想的には、ここで説明した多くの方法の1つを使用して、キャッシュヘッダーを書き出さないようにします 。ASP.NETWebサイト全体のブラウザーキャッシュを無効にします。

于 2012-04-29T17:26:51.487 に答える