ASP.NET MVC 4 par Défaut _LoginPartial modèle de Déconnexion ne fonctionne pas
J'ai été bidouiller avec le _Layout et _PartialLayouts de la valeur par défaut MVC 4 modèles et soudain, la "Déconnexion" élément dans la _PartialLogin' doc a stopeed de travail. Pour vous donner plus d'info, le _LoginPartial.cshtml est appelé à partir de la _NavBar.cshtml qui, à son tour, est appelé à partir de la _Layout.cshtml
Le code de la _LoginPartial.cshtml est:
@if (Request.IsAuthenticated) {
<text>
<p>Hello, @Html.ActionLink(User.Identity.Name, "Manage", "Account", routeValues: null, htmlAttributes: new { @class = "username", title = "Manage" })!
@using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm" })) {
@Html.AntiForgeryToken()
<a href="javascript:document.getElementById('logoutForm').submit()">Log off</a>
}</p>
</text>
}
Le code de la _NavBar.cshtml est:
<form class ="navbar-form navbar-right" method="post" action="/account/login">
<div class ="form-group">
@Html.Partial("_LoginPartial")
</div>
</form>
Le code de la _Layout.cshtml est:
<body>
@Html.Partial("_Navbar")
@RenderSection("featured", required: false)
@RenderBody()
<div class="container">
Je que peut-être le problème, c'est le javascript a été désactivé involontairement en quelque sorte. Suis-je en manquant de certaines balises de script peut-être? Ou est-il quelque chose dans la classe précédente où j'ai appelé le _PartialLogin??
logoutForm
qui exécute un post à une déconnexion de l'action sur la page?Oui. J'ai seulement changé certaines des lignes dans le " _Layout la forme et le '_PartialLogin formulaire
de l'aide s'il vous plaît 🙂
Pouvez-vous montrer (au moins les parties pertinentes) le fichier de mise en page? Aussi, quelle erreur recevez-vous?
Il n'y a pas d'erreur, il n'a juste aucune réponse quand je clique sur le lien de Déconnexion - Bien que j'ai même changé de
@Html.ActionLink("Log off", "LogOff", "Account", routeValues: null, htmlAttributes: new { @class = "btn btn-warning" })
et la redirection ne fonctionne pas. Est-ce parce que je suis l'appel de la _LoginPartial.cshtml dans le _NavBar.cshtml, qui est appelé à partir de la _Layout.cshtml?OriginalL'auteur Gman16 | 2013-12-03
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas répondre à votre question ( vous avez déjà résolu le problème ) mais je pense que cela améliore grandement le code:
modifier cette ligne :
avec celui-ci:
aussi l'id du formulaire n'est pas nécessaire avec ce changement.
OriginalL'auteur Bart Calixto
J'ai eu ce problème aussi - parce que nous sommes aussi en utilisant bootstrap.
Cela a bien fonctionné dans google Chrome:
<a href="javascript:document.getElementById('logoutForm').submit()">Log off</a>
Mais pour le faire fonctionner sur Explorer, la solution était de déplacer le code javascript pour l'attribut onclick:
<a href="#" onclick="javascript:document.getElementById('logoutForm').submit()">Log off</a>
https://stackoverflow.com/a/17078223
OriginalL'auteur red8884
Résolu le problème...
Vous ne pouvez pas mettre le javascript texte dans un
<form>
tag. Il ne fonctionnera pas comme le bootstrap mess avec elle alors.Il n'importe pas combien de fois que vous appelez le partialLayouts dans eachother - juste être prudent en vous tags intégrer le javascript dans
OriginalL'auteur Gman16