Question

Je travaille dans VS2010, projet ASP.NET MVC 2. Le projet a été achevé, il reste à être révélée à l'IIS, mais les problèmes se posent. demande AJAX qui appelle la méthode du contrôleur ne fonctionne pas sur IIS, mais le travail dans VS. Je ne sais pas si quelque chose doit être inclus en particulier pour le soutien IIS d'AJAX? Je besoin d'aide et comment transmettre la demande et l'URL est interprété comme la demande MVC avec des paramètres? J'utilise 5 IIS.

Était-ce utile?

La solution

Vous avez codait le urls dans votre javascript, ne vous ai pas:

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

});

au lieu d'utiliser les aides d'URL:

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

});

La raison pour laquelle votre code ne fonctionne pas lorsque vous avez déployé votre application dans IIS est parce que vous avez maintenant un répertoire virtuel, comme ceci: http://example.com/myapplication/home/index. Si vous l'URL au lieu coder en dur d'utiliser les aides d'URL pour générer vous vous retrouvez avec une demande d'AJAX pour http://example.com/home/index qui bien sûr ne fonctionne pas comme vous manque le nom de l'application.

Lorsque vous travaillez localement il n'y a pas de répertoire virtuel si vous utilisez Visual serveur Web intégré dans Studio les regards url comme ceci:. http://locahost:1234/home/index

Personnellement, ce que je vous recommande est d'utiliser simplement HTML aides pour générer des éléments DOM tels que <form> et <a> puis les AJAXify discrètement.

Par exemple, vous pouvez avoir la forme suivante:

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

que vous pourriez AJAXify comme ceci:

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

Voyez comment nous ne sommes plus hardcoding des urls dans nos fichiers javascript? Maintenant, tout fonctionnera, peu importe où vous hébergez votre application.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top