1

マスターページのリンクからAjax呼び出しを取得しようとしています。

したがって、現在のページ/コントローラーに関連するアクションのみを指定したいと思います。

すなわち

 $.ajax({
      url: '/Save',
      type: "GET",
      // .. etc 
 });

ページを提供するコントローラーの「保存」アクションを呼び出したいと思います。これはすぐに機能すると思いましたが、そうではないようです。エレガントな解決策はありますか?

4

1 に答える 1

7

これを直接視野に入れれば、次のことができます

 $.ajax({
      url: '@Url.Action("Save")',
      type: "GET",
      // .. etc 
 });

そうでなく、javascript が外部ファイルにある場合は、生成された URLUrl.Actionを要素にdata-?html5 属性として添付できます。そして、ajax 呼び出しを行う前に、その属性値を動的に読み取ります。

<input type="text" data-save-action-url="@Url.Action("Save")" />

asp.net mvc で URL をハードコーディングしないでください。常に使用しますUrl.Action。URL を生成するときにルーティング構成を検査し、それに応じて常に正しい値を返します。URL をハードコーディングすると、ルーティング構成を変更したときにアプリケーションが使用できなくなる可能性があります。また、アプリケーション内のすべての URL を手動で変更する必要があります。

于 2011-09-30T11:19:13.343 に答える