web-dev-qa-db-ja.com

JavaScriptでUrl.Actionを使用する

Url.Actionメソッドを使用してajax呼び出しに必要なUrlを正しく生成しようとしていますが、RouteValuesを構築しようとすると問題が発生します。問題のあるコード行は次のとおりです。

_var url = @Url.Action("ViewFile", "Default", new { itemId = $(this).data("itemid") });
_

ご覧のとおり、JQuery $(this).data("itemid")の結果をRouteValuesのitemIdに割り当てようとしています。

このコードをコンパイルできるようにするかみそり構文を使用する方法はありますか?

14
philreed

クライアント側とサーバー側を混同しています。次のようなものを試してください:

var url = '@Url.Action("ViewFile", "Default")?itemId=' + $(this).data("itemid");

かみそりビューエンジンで@を記述する場合、このコマンドの最後にサーバー側で処理される命令を記述しています。あなたの場合、javascriptからのURLにパラメーターを追加したいので、クライアント側で@Urlヘルパーによって生成されたURLと値を連結します。

PS:デフォルトルートテーブルを使用していると仮定しています。

29
Felipe Oriani

別の方法は、プレースホルダーを作成してから置き換えることです。

var url = '@Url.Action("GetOrderDetails", "Home", new { id = "js-id" })'
              .replace("js-id", encodeURIComponent(rowId)); 
12
VahidN