2010-10-08 22 views
7

Tengo un formulario de registro en ASP.NET 2.0. Quiero guardar mis campos de formulario de registro haciendo clic en el botón Enviar o guardarlos cada cinco segundos.¿Cómo implementar una función "Guardar automáticamente" o "Guardar borrador" en ASP.NET?

Por ejemplo, tengo tres campos en mi página de registro:

UID PWD Name

el usuario ha introducido UID y PWD y mientras que está entrando en Name los valores anteriores se deben guardar sin interrupción de las entradas del usuario

¿Cómo haría esto en ASP.NET?

Respuesta

9

Puede hacer esto con un fragmento de Javascript & jQuery. Tener una función activada por un temporizador que periódicamente lee los datos del formulario que desea guardar y lo publica en una página SaveDraft.aspx. En esta página persisten los datos en alguna parte (como una base de datos).

Si el usuario cierra la sesión o se pierde su sesión, puede consultar estos datos y rellenar previamente el formulario si los datos existen.

En su página de entrada de datos ASPX:

// Usual ASP.NET page directives go here 

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
    <script type="text/javascript" src="Scripts/jquery-1.4.1.min.js" ></script> 
    </head> 
    <body> 
    <form id="form1" runat="server"> 
     <div> 
     <asp:textbox id="username" runat="server" /><br /> 
     <asp:textbox id="password" runat="server" /><br /> 
     <asp:textbox id="realName" runat="server" /><br /> 
     <asp:button id="Submit" onclick="Submit_Click" 
       usesubmitbehavior="true" runat="server" /> 
     </div> 
    </form> 

    <script type="text/javascript"> 
     $(document).ready(function() { 
     // Configure to save every 5 seconds 
     window.setInterval(saveDraft, 5000); 
     }); 

     // The magic happens here... 
     function saveDraft() { 
     $.ajax({ 
      type: "POST", 
      url: "SaveDraft.aspx", 
      data: ({ 
      username: $("#<%=username.ClientID %>").val(), 
      password: $("#<%=password.ClientID %>").val(), 
      realName: $("#<%=realName.ClientID %>").val() 
      }), 
      success: function (response) { 
      alert('saved draft'); 
      } 
     }); 
     } 
    </script> 
    </body> 
</html> 

En su página de SaveDraft.aspx:

public partial class SaveDraft : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    string username = Request.Form["username"]; 
    string password = Request.Form["password"]; 
    string realName = Request.Form["realName"]; 

    // Save data somewhere at this point  
    } 
} 

que debería empezar.

+0

¿Puedes publicar la función y la llamada del temporizador también? – Sandy

+0

Entiendo tu punto. Pero no sé cómo hacer eso? así que si publicas el código fuente será fácil para mí. – Sandy

+0

@Sandy - He actualizado mi respuesta con un prototipo – Kev

Cuestiones relacionadas