1

私のアプリケーションは、JavaScript からの AJAX 呼び出しを使用して ( 、 などを使用して) アクション メソッドへの呼び出しの多くを行い$.getます$.post

現在、JavaScript ファイルをクリーンアップしようとしていますが、インライン スクリプトをページから完全に削除することを妨げている唯一のことは、アクション メソッド ルートをページにレンダリングして、JavaScript の正しい変数に設定できるようにする必要があることです。

例は次のようなものです

url = '@Url.Action("SomeMethod","SomeController",new{area="SomeArea"})'

私がやりたいのは、global.asax必要なルートを生成するメソッドを実行し (手動でプログラミングするのに問題はありません)、それらをファイルapp.js(ハードコードされた生成されたすべての URL を含む) に対してチェックすることです。必要な場合は URL を変更します。

このようにして、インライン スクリプトを使用して URL をレンダリングしなくても、すべての URL をグローバル オブジェクトに含めることができます。これは可能ですか?

4

1 に答える 1

0

したがって、さらに調査を行った後、私が望むものに適したソリューションに出くわしました:

  1. 基本的にインライン ActionResultの部分ビューを返すメソッドを作成します。app.js
    • または、ここに示すように、JavaScript をコントローラ メソッドに直接記述して return を返しJavasScriptResultますが、これは眉をひそめます。
  2. これらの手順に従ってActionFilterAttribute、上記のメソッドのキャッシュを設定する を作成します。
  3. ソースが JavaScript の actionresult メソッドを指す<script>タグを に含めます。<head>

したがって、最終結果は次のとおりです。

public JavaScriptResult GetApp()
{
 return PartialView("App.js.cshtml");
}

キャッシング プロパティを 24 時間に 1 回 (または何でも) に設定して、コントローラーへの呼び出しが 1 回だけヒットするようにします。これで、インライン レンダリングを使用せずに、変更された URL が確実にクライアントに伝達されるようになりました。

于 2013-09-24T13:56:42.850 に答える