web-dev-qa-db-ja.com

別のjsファイルを使用し、ASP.NEt MVC3およびRazorViewEngineでURLヘルパーを使用します

私は同様の質問をします ここ と_Darin Dimitrov_は別のjsファイルで$.ajax({ url: '@Url.Action("Index")', . . .のようなURLヘルパーを使用できないと答えますので、Urlヘルパーを使用するためのあなたの提案は何ですかページを表示してjavascriptに渡します。ハードコードのURLを使用したくないので、Urlヘルパーで見つける必要があります。

17
Saeid

非表示フィールドを使用してURLを保存し、JavaScriptを使用して非表示フィールドを読み取り、それをコードで使用します。そうすれば、JSファイルをビューとは別に保つことができます。このようなもの:

//In Your View
    @Html.Hidden("MyURL", Url.Action("Index"))

//In Your JS
    var myUrl = $("#MyURL").val();

    $.ajax({ url: myUrl , . . .
32
raklos

最も簡単な方法は、何かと呼ばれるグローバル変数を作成し、外部JSでそれを参照することです。

var baseURL = '@Url.Action("Index")';

外部JSの内部

$.ajax({ url: baseURL + "Action"
8
Simon Edström

そのために RazorJS を使用できます。 JavaScriptファイル内にRazor-StyleC#またはVB.NETを書き込むことができます。利用可能な簡単な説明があります ここ

5
tpeczek

非表示のフィールドは必要ありません。これは外部の.jsファイルでも機能します。

var myUrl =/ControllerName/ActionName;

$.ajax({ url: myUrl , . . 
2
Shakil Makani

私はraklosと同様のアプローチを使用しましたが、すべての場所でルートディレクトリパスを取得しようとしていたため、以下のコードを使用しました。

@Html.Hidden("AppUrl", Url.Content("~"))
0
Mike Rivet

部分的なRazorビューを使用した外部JavaScriptファイルの生成 をご覧ください。このブログ投稿では、通常のRazorビューとカスタムアクションフィルターを使用して、Razorコードを含むことができる外部JavaScriptファイルをレンダリングする方法について説明します。

0
Marius Schulz