0

私は、Jqueryを介してAjaxも含むMVC4アプリケーションを開発してきました。そして、私は問題を抱えました。

たとえば、ボタンをクリックすると、onclickイベントがjavascriptメソッドを起動します。このメソッドは.jsファイルにあります。

そのjavascriptメソッドは、Ajaxを使用して、ActionResultいくつかのパラメーター(string、int)を受け取るanを呼び出します。つまり、私のアクション結果が「PersonControllerにあり、その名前が「Add」であるとしましょう。だから私は人を追加したいと思います。

ajax呼び出しのurlプロパティは次のように"/Person/Add"なり、データは次のようになります。

var person = new Object();
person.name = "John";
person.id = 1;

data: person

これは、VisualStudioでアプリケーションを実行するときに問題なく機能します。しかし、IISに展開すると、404エラーが発生します。

私はこれを試しました。レイアウトにを追加し、<link> <link id="PersonAddURL" href="Url.Content("~/Person/Add") />使用する代わりにurl: "/Person/Add"に変更しましたurl: $("#PersonAddURL").attr("href")

これはうまくいきます、今、私はそれを解決する良い方法だとは思いません。もう1つ良いはずです。それでも、なんとか解決できたとしても、その理由を誰かに説明してもらいたい。URLごとに1つのリンクタグを付けるというアイデアは好きではありません。

今後の回答ありがとうございます。

4

1 に答える 1

4

私が通常行うことは、ASP.NETMVCレイアウトに次のグローバルjavascript変数を含めることです。

<script>var webroot = "@Url.Content("~/")";</script>

次に、任意のJSファイルから次の操作を実行できます。

$.post(webroot + "Person/Add", person, function(result){ ... });

AJAXを呼び出す前に、必ずwebroot変数を宣言して初期化してください。

JavaScriptで名前空間を使用している場合は、次のように変更できます(アプリの名前空間を想定)。

<script>app.webroot = "@Url.Content("~/")";</script>

開発者を不快にさせるグローバル変数を削除します。

于 2013-02-05T21:03:34.803 に答える