2012-04-06 1 views
3

J'essaye d'implémenter AJax sur Umbraco 5 (jupiter), j'ai essayé de créer des contrôleurs de surface, ce qui fonctionne très bien avec le postback normal mais ne permet pas d'utiliser Mvc Ajax contrôles ie Ajax.BeginForm Etc ..., j'ai maintenant ajouté une nouvelle zone MVC dans l'application, je suis capable de renvoyer Post retour à travers Ajax facilement à l'action du contrôleur mais i Que dois-je retourner de cette action, comme CurrentUmbracoPage est pas accessible (car il est pas un contrôleur de surface), mon code est assez simple,Umbraco 5 implémentant Ajax en ajoutant une nouvelle zone MVC

@using (Ajax.BeginForm("HandleFollowsUs", "propertyDetails", new AjaxOptions { InsertionMode = InsertionMode.Replace, HttpMethod = "POST", LoadingElementId = "ajax-loader", UpdateTargetId = "fuError" })) 
{ 
<input type="image" style="border-width: 0px;" src="/images/btnSubmitN.jpg" id="btn_submitEmail" /></span> 

} 
AND my ACTION is 
[HttpPost] 
    public ActionResult HandleFollowsUs(FormCollection collection) { 
//Do Something 
Return View();//////This is where i am confused. 
} 

Si je retourne View, il est pas dans la zone Nouveau, Vue partielle ne retourne une partie de bit de la page ,:/ Toute aide serait apprécié, Merci, Sher

Répondre

2

Utilisez Jquery Ajax à la place et retourner une chaîne, il affecte l'habitude de l'acheminement normal du Umbraco 5. Exemple de code est comme ci-dessous

function loadList(){ 
$.ajax({ 
    type: "POST", 
    url: "/en/propertydetails/searchListView", 
    data: "loc=" + loc + "&startDate=" + startDate + "&endDate=" + endDate + "&bedrooms=" + bedrooms + "&adults=" + adults + "&children=" + children + "&offerCode=" + offerCode, 
    error: function (xhr, status, error) { 
     //alert('error'); 
    }, 
    success: function (response) { 
     //do something with response 
     populateSearchList(response); 
    } 
}); 

}

Et mon action est

[HttpPost] 
    public string searchListView(string loc, string endDate, string startDate, string bedrooms, string adults, string children, string offerCode) 
    { 
//Do Something 
} 
1

Vous pouvez si bien sûr envoyer l'URL actuelle sous la forme d'un fichier masqué afin que HandleFollowUs puisse effectuer la redirection. Mais si je comprends bien, vous voulez juste faire une validation côté client? Envisagez d'utiliser le cadre de validation discret déjà présent dans le cadre MVC. Jetez un coup d'oeil à ce poste pour plus d'informations: ASP.NET MVC 3 - Ajax.BeginForm vs jQuery Form Plugin

+2

Merci pour le sebastiaan de réponse, je ne veux pas faire une validation côté client, je veux utilisateur de soumettre son email afin qu'il puisse suivre notre newsletter , en fait je fais tout cela à cause de votre paquet (jupiter comme application Visual Studio), et il fonctionne très bien MERCI d'un million, j'ai aussi résolu le problème en utilisant Jquery ajax. – Sher

+0

De rien. J'allais vous suggérer de la plaine jQuery mais je vois que vous l'avez déjà réglé de cette façon, bravo! – sebastiaan