Mise à jour: J'ai complètement supprimé le type de données "html" et j'espère que la valeur de retour sera toujours évaluée - mais rien ne se passe actuellement.Asp.net MVC 2 - L'objet Json retourné n'est pas récupéré en javascript?
J'ai également ajouté le code qui appelle la fonction "openModal". Il se trouve dans le UserControl LogOn contenu dans Site.Master. Espérons que cela éclaircit quelques choses
Il semble que le contrôleur ne retournera pas l'objet JSON à l'appelant ajax, quelque chose est perdu quelque part - je ne suis jamais frappais cette pause point..it entièrement saute
J'ai un modal simple pour les connexions, donc j'appeler l'action LogOn comme ceci:
<div id="logonForm">
<% using (Ajax.BeginForm("LogOn", "Account", new AjaxOptions{UpdateTargetId = "logonForm"})) { %>
//my login form
<% } %>
</div>
Et l'action se présente comme suit:
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
//success login
if (Request.IsAjaxRequest())
return Json(new { Url = Url.Action("Index", "Home") }, JsonRequestBehavior.AllowGet);
else
return RedirectToAction("Index", "Home");
}
À ce stade, il retursthe nouvel objet JSON avec l'URL du contrôle de l'utilisateur (en Site.master), le javascript ici:
<script type="text/javascript">
function openModel() {
$.ajax({
type: "get",
url: '/Account/LogOn',
contentType: "application/x-www-form-urlencoded;charset=utf-8",
// async: true,
success: function (result) {
debugger;
if (typeof result == 'string') {
$.modal(result, {
closeHTML: "",
containerId: "login-container",
overlayClose: true
});
}
else if (result.Url) {
debugger;
window.location.href = result.Url;
}
}
});
}
</script>
<% if (Request.IsAuthenticated) { %>
Welcome <b><%: Page.User.Identity.Name %></b>!
<%: Html.ActionLink("Log Out", "LogOff", "Account") %>
<% } else { %>
<a href="javascript:openModel()">Log In</a>
<% } %>
... mais le javacript les prises ne peuvent pas it..i voir ce qui se trouve dans le "résultat", l'écran affiche un "{Url: /}" - comportement tout simplement étrange
Que manque-t-il? le débogueur; pause est déclenchée lorsque je cliquez d'abord sur le lien, mais lorsque je tente de soumettre le formulaire, il passe à travers le contrôleur LogOn - essaie de renvoyer l'objet JSON, mais ne revient jamais au javascript
Merci beaucoup
D'où vient 'se openModel' appelé à partir? – andynormancx
'dataType:" html ",' cette ligne semble fausse ...ne devrait-il pas être 'dataType:" json ",' –
Ceci est une question de suivi. http://stackoverflow.com/questions/4293765/asp-net-mvc-login-modal-problems-redirect-goes-to-modal/4293904 –