Guybrush Threepwood Geschrieben 9. März 2007 Geschrieben 9. März 2007 Ich möchte beim Verlassen einer ASP Seite den Inhalt speichern. Bevor jetzt hier einwände kommen ich weiß das das nicht einfach so möglich ist, aber ich suche (unkonventionelle) Ideen Ich hab dazu mal eine kleine Testseite erstellt: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SaveOnClose.aspx.cs" Inherits="ModalPopupSample.SaveOnClose" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> <script type="text/javascript"> onbeforeunload = function AskSave() { if (confirm('Wollen Sie vor dem Beenden Ihre Änderungen speichern?') == true) { __doPostBack('btnSave',''); alert('Daten gespeichert'); } } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="True"> </asp:ScriptManager> <asp:Label ID="Label1" runat="server" Text="Wert1:"></asp:Label><asp:TextBox ID="txt1" runat="server"></asp:TextBox><br /> <asp:Label ID="Label2" runat="server" Text="Wert2:"></asp:Label><asp:TextBox ID="txt2" runat="server"></asp:TextBox><br /> <asp:Label ID="Label3" runat="server" Text="Wert3:"></asp:Label><asp:TextBox ID="txt3" runat="server"></asp:TextBox><br /> <asp:Button ID="btnSave" runat="server" Text="Speichern" OnClick="btnSave_Click" /> <asp:HiddenField ID="Saved" runat="server" /> </div> </form> </body> </html> [/PHP] [PHP] using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.IO; using System.Web.Services; namespace ModalPopupSample { public partial class SaveOnClose : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { File.Delete("c:\\savetest.txt"); } protected void btnSave_Click(object sender, EventArgs e) { FileStream file = new FileStream("c:\\savetest.txt", FileMode.CreateNew); StreamWriter w = new StreamWriter(file); w.WriteLine(txt1.Text); w.WriteLine(txt2.Text); w.WriteLine(txt3.Text); w.Close(); file.Close(); } } } Die Sache hier ist die das das alert('Daten gespeichert') dafür sorgt das der Webserver genug Zeit hat den Postback durchzuführen und die Daten zu speichern. Ich find das allerdings nicht so schön jedesmal noch eine Messagebox zu bringen, außerdem könnte es evtl. zu Problemen führen wenn der Server mal nen Hänger hat und die Message Box zu schnell geschlossen wird. Ich hab auch mal probiert einen Webservice zu schreiben der solange wartet bis gespeichert wurde und im Javascript beim Beenden so lange zu warten bis dieser Webservice zurück gekommen ist, aber das hat leider nicht geklappt. Ich denke zwar nicht das sich hier eine 100%tige Lösung finden lässt, aber ich lasse mich gerne überraschen
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden