2012-05-13 30 views
1

jQuery ajax呼び出しでコントローラのアクションが正しく解決されるようにするには、どのURL構文を使用する必要がありますか? Visual Studioでサイトを運営しながら、例えば、にHomeController上のメソッド1を起動するには、次の構文は動作します:別のjavascriptファイルからASP.NET MVCコントローラアクションを呼び出す

$.ajax({ 
      type: 'GET', 
      url: "Home/Method1?lparam1=" + 1+ "&param2=" + 2, // my problem 
      dataType: 'json', 
      cache: false,    
      success: function(){ alert("success");} 
     }); 

しかし、私はIIS上でサイトを展開するとき、私はアクションが解決できないコントローラ私に言っHTTP 404を得ます。

TIA。

答えて

1

私はMVCはあなたのためのリンクを生成させるでしょう:

url: '@Url.Action("Method1", "Home")?lparam1=' + encodeURIComponent(1) + ... 

外部ファイルにあなたのJS、あなたがあなたのページにURLでグローバル変数を設定し、外部ファイルがそれを読んでみましょうことができれば。 VSとIISのURLが異なる場合は、プロジェクトのプロパティに仮想ディレクトリ名を指定して、IISディレクトリと一致するようにすることもできます。また、CassiniではなくIISを使用することもできますWebサーバーで)。

+0

。私が要求しているurlを見るとlocalhost/home/method1ですが、IISではlocalhost/mysiteに展開していますので、urlはlocalhost/mysite/home/method1にする必要があります。 propiteプロパティのmysite /に仮想パスを設定すると、VS URLはIISと同じになりますが、元の問題は修正されません。私はちょうど埋め込みスクリプトを終了し、それを1日と呼びます。 –

+0

グローバルファイルのように見えますが、私は外部ファイルにスクリプトを保存したいのです。 –

+0

私は、あなたのロジックをすべてJavaScriptの「クラス」にラップし、ページ内でインスタンス化するときにコントローラのURLをオプションとして渡すことで、このアプローチを改善できると思います。 –

0

だけにURL行を変更:はい、私のスクリプトは、それゆえ私の問題外である

url: "/Home/Method1?lparam1=" + 1+ "&param2=" + 2, 
+1

この構文は、外部ファイルのJavascriptでは機能しません。 –

関連する問題