質問

私はvs2010、asp.net mvc 2プロジェクトで働いています。プロジェクトは完了しましたが、IISで明らかにされるべきですが、問題は発生します。コントローラーメソッドを呼び出すAJAX要求は、IISでは機能しませんが、vsで動作します。 AJAXのIISサポートのために特に何かを含めるべきかどうかはわかりませんか?私は助けが必要です、そして、リクエストを転送する方法とURLはパラメーターを使用したMVC要求として解釈されますか? IIS 5を使用しています。

役に立ちましたか?

解決

あなたはあなたのJavaScriptのURLをハードコードしました、あなたはそうではありません:

$.post('/home/index', function(result) {

});

URLヘルパーを使用する代わりに:

$.post('<%= Url.Action("index", "home") %>', function(result) {

});

IISにアプリケーションを展開したときにコードが機能しない理由は、次のような仮想ディレクトリを持っているからです。 http://example.com/myapplication/home/index. 。 URLヘルパーを使用して生成する代わりにURLのハードコードを作成すると、 http://example.com/home/index もちろん、アプリケーション名が欠落しているため、これは機能しません。

地元で作業するとき、Visual Studioの組み込みWebサーバーを使用している場合、Virtual Directoryはありません。URLは次のようになります。 http://locahost:1234/home/index.

個人的に私がお勧めするのは、HTMLヘルパーを使用して、ようなDOM要素を生成することです <form><a> そして、それらを控えめに無作法にします。

たとえば、次の形式を持つことができます。

<% using (Html.BeginForm("SomeAction", "SomeController")) { %>
    ... some input fields
<% } %>

あなたはこのようにajaxifyすることができます:

$(function() {
    $('form').submit(function() {
        $.post(this.action, $(this).serialize(), function(result) {
            // TODO: process the results
        });
        return false;
    });
});

JavaScriptファイルのURLをハードコードしていない方法をご覧ください。これで、アプリケーションをホストする場所に関係なく、すべてが機能します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top