- Ausführen in ASP.NET MVC neben jQuery -Kann eine PartialView ohne ein Postback erneut gerendert werden?
Ich benutze jQuery, um einen <LI>
Block als eine Liste von Dropdown-Menüelementen zu rendern. Es gibt 3 Einträge in der Liste, wenn der Benutzer _nicht angemeldet ist - 4 Einträge, wenn er_ eingeloggt ist. Dieser 4. Eintrag muss einige Bedingungen ausführen, bevor er genau entscheiden kann, welche Nutzlast er trägt, also habe ich diesen Code in einem .ascx Kontrolle und die Hauptseite Aufrufe:
<div id="loginBox">
<% Html.RenderPartial("showLoginStatus"); %>
</div>
, um zu entscheiden, wie es zu rendern.
So viel funktioniert, solange ich bereit bin, auf ein Postback zu warten, das der AJAX-basierten Anmeldung folgt. Was ich jetzt tun muss, ist, dass der Code ohne die Seitenaktualisierung ausgeführt wird.
Der Teil der Seite, die entweder den Login-Button oder den Namen des Benutzers anzeigt wie folgt aussieht:
var form = $("#loginForm");
form.submit(function() {
var data = form.serialize();
$.post(form.attr("action"), data, function(result, status) {
if (result.Success) {
$(".showLoggedUser").html(result.UserName + '<br /><a href="/Admin/Account/LogOut">Log Out</a>');
//how can I force the code contained in 'showLoginStatus.ascx' to render at this point?
api.close();
} else {
$('.loginErrors').html(result.ErrorMessage);
}
}, "json");
return false;
});
});
Haben Sie überlegt, ein Updatepanel zu verwenden? Obwohl updatepanels dafür bekannt sind, dass sie "langsam" sind, verwenden Sie firebug, um zu sehen, wie viele Daten tatsächlich zurückgesendet werden. Es mag zwar klein sein, aber es sollte Ihnen viel Kopfzerbrechen bereiten und den Seitenlebenszyklus im Zaum halten –