2013-07-17 10 views
12

私はUrl.Actionメソッドを使ってajax呼び出しのために必要なURLを正しく生成しようとしていますが、問題のコード行はRouteValuesをビルドしようとしています。JavaScriptでUrl.Actionを使用する

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

あなたが見ることができるように、私はRouteValuesにitemIdにjQueryの$(this).data("itemid") の結果を代入しようとしています。

このコードをコンパイルするための剃刀構文を使用する方法はありますか?

答えて

23

あなたはクライアント側をサーバー側と混同しています。あなたはかみそりビューエンジンと@を書くとき

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

、あなたは、このコマンドの最後に、サーバ側の処理となります命令を書いている:このような何かを試してみてください。あなたの場合、javacriptから来るurlのパラメータを追加したいので、@Urlヘルパーによって生成されたurlの値をクライアント側で連結するだけです。

PS:私はあなたがデフォルトルートテーブルを使用していると仮定しています。

+3

ああ、もちろん、jQueryの文句を言わない実行、どのように私の愚かな。ありがとう。 [ひどく頭を下げる] – philreed

9

もう一つの方法は、プレースホルダを作成し、それを置き換えることです:サーバー側のコードが実行されると

var url = '@Url.Action("GetOrderDetails", "Home", new { id = "js-id" })' 
       .replace("js-id", encodeURIComponent(rowId)); 
関連する問題