Url.Action
は、外部のjavascriptファイルではなく、かみそりのビューで機能するhtmlヘルパーメソッドです。
できることは、Url.Action
かみそりのビューでヘルパーメソッドを使用してアクションメソッドへの相対URLを取得し、それをjavascript変数に設定して、外部jsファイルで使用することです。これを行うときは、既存のグローバル変数との競合を避けるために、常にjavascript名前空間を使用してください。
このコードは_Layout.cshtmlに追加できます
<script type="text/javascript">
var yourApp = yourApp || {};
yourApp.Urls = yourApp.Urls || {};
yourApp.Urls.baseUrl = '@Url.Content("~")';
yourApp.Urls.editUserUrl= '@Url.Action("Edit","User")';
</script>
または、ページ固有のビューで、
@section Scripts
{
<script type="text/javascript">
var yourApp = yourApp || {};
yourApp.Urls = yourApp.Urls || {};
yourApp.Urls.baseUrl = '@Url.Content("~")';
yourApp.Urls.editUserUrl= '@Url.Action("Edit","User")';
</script>
<script src="~/Scripts/PageSpecificExternalJsFile.js"></script>
}
これで、外部のjavascriptファイルで、次のようにアクセスできます。
var urlToEditUser = yourApp.Urls.editUserUrl;
//you can use urlToEditUser now
// Or With the base url, you may safely add the remaining part of your url.
var urlToEditUser2 = yourApp.Urls.baseUrl+"User/Edit";
//you can use urlToEditUser2 now
常にUrl.Action
またはUrl.RouteUrl
htmlヘルパーメソッドを使用して、アクションメソッドへの相対URLを作成します。現在のページ/パスに関係なく、URLを正しく構築します。
角度コントローラーやデータサービスなどで同じことをしたい場合は、角度値プロバイダーを使用して同じことを行う方法を説明しているこの投稿をご覧ください。