私は同様の質問をします ここ と_Darin Dimitrov
_は別のjsファイルで$.ajax({ url: '@Url.Action("Index")', . . .
のようなURLヘルパーを使用できないと答えますので、Urlヘルパーを使用するためのあなたの提案は何ですかページを表示してjavascriptに渡します。ハードコードのURLを使用したくないので、Urlヘルパーで見つける必要があります。
非表示フィールドを使用してURLを保存し、JavaScriptを使用して非表示フィールドを読み取り、それをコードで使用します。そうすれば、JSファイルをビューとは別に保つことができます。このようなもの:
//In Your View
@Html.Hidden("MyURL", Url.Action("Index"))
//In Your JS
var myUrl = $("#MyURL").val();
$.ajax({ url: myUrl , . . .
最も簡単な方法は、何かと呼ばれるグローバル変数を作成し、外部JSでそれを参照することです。
var baseURL = '@Url.Action("Index")';
外部JSの内部
$.ajax({ url: baseURL + "Action"
非表示のフィールドは必要ありません。これは外部の.jsファイルでも機能します。
var myUrl =/ControllerName/ActionName;
$.ajax({ url: myUrl , . .
私はraklosと同様のアプローチを使用しましたが、すべての場所でルートディレクトリパスを取得しようとしていたため、以下のコードを使用しました。
@Html.Hidden("AppUrl", Url.Content("~"))
部分的なRazorビューを使用した外部JavaScriptファイルの生成 をご覧ください。このブログ投稿では、通常のRazorビューとカスタムアクションフィルターを使用して、Razorコードを含むことができる外部JavaScriptファイルをレンダリングする方法について説明します。