2009-05-15 9 views
3

Ich habe eine ASP.NET-Webseite (nicht MVC) (HomePage.aspx) und eine andere Seite (PRiceList.aspx) .Ich habe eine Login-Funktion auf meiner Homepage .So wenn sich ein Benutzer auf der Site anmeldet, kann er leicht auf die pricelist.aspx-Seite gehen, indem er einen Link in der Homepage benutzt. Wenn jemand die Seite ohne Login eingibt, möchte ich eine modale Login-Box anzeigen (Hintergrund deaktiviert) Einloggen . Ich sah dies in jqueryui Website.Kann jemand mir sagen, wie dies auf meiner Website zu impigen? Gibt es ein Sicherheitsproblem darin, da ich das Javascript verwende, um die Benutzeranmeldeinformationen an die Site zu senden, wenn ich diese Methode verwende (ich bin mir nicht sicher). Bitte um Rat. Vielen Dank im VorausjQuery Login modales Popup für ASP.NET 2.o Seite

+0

Es gibt ein Tutorial hier, wie man das macht http://everymprogrammer.com/index.php/using-the-ajax-modalpopup-a-beginners-guide/ –

Antwort

7

jQuery Modal Form Dialog ist Ihr Weg hierher zu gehen. Ich habe eine Test-App gemacht, die das macht, was du damit willst und es hat gut funktioniert.

Markup für Ihre ASPX-Seite:

<div id="dialog" title="Please Login"> 
     <asp:Login ID="login" runat="server" /> 
</div> 

Javascript für die Seite erforderlich:

$(document).ready(function() { 
$("#dialog").dialog({ 
    bgiframe: true, 
    autoOpen: false, 
    height: 300, 
    modal: true, 
    buttons: { 
     Cancel: function() { 
      $(this).dialog("close"); 
     } 
    }, 
    close: function() { 
     allFields.val("").removeClass("ui-state-error"); 
    } 
}); 

var isAuthenticated = $("#isAuthenticated").val(); 
if (isAuthenticated && isAuthenticated == "false") { 
    // Display the modal dialog. 
    $("#dialog").dialog("open"); 
}}); 

-Code hinter ich auf der aspx Seite verwendet:

ClientScript.RegisterHiddenField("isAuthenticated", "false"); 

Sie würden es geben true oder false, abhängig davon, ob der Benutzer authentifiziert wurde, also würde das Javascript die Anmeldung anzeigen oder nicht.

Jetzt über die Sicherheit. Die Anmeldung würde nicht durch das Javascript erfolgen, da der Benutzer die Schaltfläche auf der Anmeldeseite drücken würde und diese wie gewohnt auf dem Server posten würde. Wenn Sie Ajax verwenden möchten, müssen Sie die Methode jQuery $.ajax ausprobieren.

+0

SO innerhalb der Codebehind-Datei werde ich für die Authentifizierung und wenn der Benutzer gültig ist, umleiten auf eine andere Seite, zeigen Else eine Messgae im selben modalen Popup. Wie kann ich aus dem C# .net-Code zurück zu meinem Javascrip kommunizieren? – Shyju

+0

Von dem, was ich in Ihrer ursprünglichen Frage verstanden habe, wäre dieser Check in Ihrem Code hinter PriceList.aspx. Sie würden prüfen, ob der Benutzer authentifiziert wurde, und dies dann im versteckten Feld registrieren. So kommunizieren Sie es mit dem Javascript. ClientScript.RegisterHiddenField ("isAuthenticated", "false"); Das rendert so etwas auf der Seite: Gromer

+0

Danke Grommer. Aber ich habe ein Problem mit diesem Code.Ich habe es hier veröffentlicht . http://stackoverflow.com/questions/876295/asp-net-with-jqueryui-server-side-event-not-brand können Sie bitte einen Blick darauf und beraten Sie mich – Shyju

2

ein jquery Dialog verwenden:

http://jqueryui.com/demos/dialog

Dies muss man die modale zurück auf das DOM hinzuzufügen.

jQuery(".loginPanel").each(function() 
{ 
    var popup = jQuery(this); 
    popup.parent().appendTo(jQuery("form:first")); 
});