-1

編集 それを考え出した.. $.ajaxSetup({ cache: false }); フォームでdata-ajaxをオフに設定していたため、機能していませんでした。したがって、キャッシュajaxを設定できませんでした..完全を期すために、dada-ajaxが設定されている間にこれを行う方法を誰かが知っている場合false に投稿してください。

私が試した他の何か は、ページを更新したいリンクに data-ajax="false" を追加するだけでした。つまり、リンクに data-ajax="false" がある場合、表示する前に常にページが更新されます!

たとえば、私が問題を抱えていたリンクは

<a href="@Url.Action("CreateStatusReport", "ProjectHome")">Add a new weekly update</a>

問題は、何らかの理由でページがキャッシュされ、キャッシュされたページが常に表示されていたことでした..したがって、簡単な修正の1つは data-ajax="false" を追加することで、毎回ページのリロードを強制しました

<a href="@Url.Action("CreateStatusReport", "ProjectHome")" data-ajax="false">Add a new weekly update</a>

`` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` ``````````````

質問: キャンセル ボタンと送信ボタンもあるフォームを表示するオプション メニューがあります。

フォームが送信されると、実行される特定の検証があり、何かが不足している場合は、検証テキストとともにフォームに戻ります。

いつでもキャンセル ボタンをクリックすると、オプション メニューに戻る必要があります。フォームを表示するのと同じボタンをクリックすると、まったく新しいクリーンなフォームが表示されます。これは、検証前に行うと正常に機能します。 .

問題は、エラー検証メッセージで返される無効なフォームを送信し、[キャンセル] を押すと、その時点からいつでもフォーム オプション メニュー ボタンをクリックすると同じフォームが表示されるため、ページがキャッシュされたように見えることです。それぞれに検証エラーとデータを追加します。フォームView()を返すメソッドにブレークポイントを配置しましたが、ヒットすることはありません。何らかの理由で、新しいフォームを作成するメソッド全体をスキップし、古いページを表示するだけです。

キャンセルボタンは以下

<a href="@Url.Action("ProjectOptions", "ProjectHome", new { id = @Session["projectID"], remove = "true" })" style="text-align:center" data-role="button" data-theme="e"  data-icon="arrow-l">Cancel</a>

何が起こっているか知っている人はいますか?検証エラーで同じページに戻ったときに、何らかの形でキャッシュされていますか??

** 編集 **

コントローラーの前に追加しようとし[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]ましたが、役に立ちませんでした..

私も今追加しました

   $.ajaxSetup({ cache: false });

$(document).ready(function () の先頭に移動しますが、それも何もしていないようです。そこに置くだけですか、それとも何らかの方法で呼び出す必要がありますか?

System.Web.HttpContext.Current.Cache を確認しましたが、ページが表示されません。

4

3 に答える 3

1

次のようなコントローラーアクションで出力キャッシュオプションを設定しようとしましたか

[OutputCache(Duration=600,VaryByParam="id")]

また、jquery がリクエストをキャッシュしていないことを確認してみてください。次の情報を使用して、jquery ajax キャッシュをグローバルにオフにすることができます: jQuery.get 呼び出しでキャッシュを設定する方法: false

于 2012-09-17T16:17:51.200 に答える
1

を使用$.mobile.changePage()してページに遷移することができます。これにより、いくつかのオプションを設定できます。そのうちの 1 つが ですreloadPage

reloadPage ( boolean , デフォルト: false) ページコンテナの DOM に既にある場合でも、ページのリロードを強制します。changePage() の「to」引数が URL の場合にのみ使用されます。

ソース: http://jquerymobile.com/demos/1.1.1/docs/api/methods.html

次のようなものを使用して、これをリンクに組み込むことができます。

<script>
function changeMyPage(url) {
    $.mobile.changePage(url, { reloadPage : true });
}
</script>

<a href="#" onclick="changeMyPage('@Url.Action("ProjectOptions", "ProjectHome", new { id = @Session["projectID"], remove = "true" }))'" style="text-align:center" data-role="button" data-theme="e"  data-icon="arrow-l">Cancel</a>

jquery Mobile は一度に複数の疑似ページを DOM にプルし、通常.removes()は疑似ページから移動した後にその疑似ページを削除 ( ) します。ただし、それは起こっていないように聞こえるため、上記のコード (または同様のもの) を使用してページを強制的に更新する必要がある場合があります。

于 2012-09-17T16:56:52.083 に答える