Intercettare il refresh di una pagina in form di inserimento

di Daniele Bochicchio, in ASP.NET, PostBack, C#,

All'interno delle pagine di inserimento dati sarebbe buona cosa implementare un sistema che cerchi di individuare i tentativi di inserimento multipli da parte di un utente, ad esempio attraverso il refresh della pagina.
Un comodo sistema consiste nello sfruttare a dovere gli eventi della pagina, in modo che venga scritto un cookie al primo inserimento ed utilizzato successivamente per effettuare un controllo.

<SCRIPT RUNAT="SERVER" LANGUAGE="C#">

string cookiename;

void Page_Init()
{
  // imposto il nome del cookie
  cookiename = "refreshed_" + Server.UrlEncode(Request.Url.PathAndQuery);
}

void Page_PreRender()
{
  if (Page.IsPostBack)
  {
    // segno che è stato inserito
    Response.Cookies[cookiename].Value = "true";
  }
  else
  {
    // svuoto il cookie se sono di nuovo sulla form di inserimento
    Response.Cookies[cookiename].Value = "false";
  }
}

void insertNewRecord (Object o, EventArgs e)
{
  if (Request.Cookies[cookiename] != null && Convert.ToBoolean(Request.Cookies[cookiename].Value))
    result.Text = "Già inserito";
  else
  {
    // codice che inserisce il nuovo record
    result.Text = "Inserito con successo!";
  }
}
</SCRIPT>
<form runat="server">
<asp:button runat="server" onClick="insertNewRecord" Text="Inserisci!" />
<asp:literal id="result" runat="server" />
</form>

Questa modifica può anche essere fatta sfruttando una classe Page di base, da cui poi far ereditare le pagine della nostra applicazione che hanno bisogno di questa protezione.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi