Вопрос

Я работаю в проекте 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, и URL выглядит следующим образом: http://locahost:1234/home/index.

Лично я бы порекомендовал вас просто использовать помощников HTML для генерации элементов DOM, таких как <form> а также <a> И тогда ненавязчиво их джаксифицируют их.

Например, у вас может быть следующая форма:

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

Что можно было бы так:

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

Посмотрите, как мы больше не в твердом кодировке в наших файлах JavaScript? Теперь все будет работать независимо от того, где вы принимаете приложение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top