Ottenere facilmente dati HTML PostBack in ASP.NET
Flessibile, potente e sicuro
Ci sono stati alcuni casi nelle fasi di sviluppo dell'applicazione in cui è stato necessario ottenere i dati dei post prima del normale ciclo di vita dei controlli. Sebbene non sia un grosso problema di codifica da aggirare, volevamo renderlo il problema il minor fastidioso possibile.
Se combinato con una funzione di commutazione, puoi dire all'applicazione di estrarre i dati da un'origine dati o dal postback a seconda della situazione.
L'abbiamo utilizzato in ambienti di produzione in alcuni casi e viene ampiamente utilizzato all'interno della nostra applicazione Ousia CMS:
- Creazione di un controllo asp:GridView completamente aggiornabile, quasi simulando un foglio Excel
- Impostazione del modulo personalizzato asp:DropDown valori selezionati senza errori
- Rimozione dello stato della sessione dalle applicazioni per ridurre il carico utile
- Aggiornamento anticipato dell'applicazione (prima che i controlli siano completamente creati)
- Pulizione dei dati, restituisce il tipo di dati corretto.
Imposteremo il codice di seguito, quindi entreremo in alcuni dettagli dopo.
ASP.NET
Public Shared Function GetPostBackValue(ByVal r As HttpRequest, c As Control) As String Dim ret As String = "" If Not IsNothing(r.Form) Then If Not IsNothing(r.Form.Item(c.UniqueID)) Then ret = r.Form.Item(c.UniqueID) Return ret End Function Public Shared Function GetPostBackValueString(ByVal r As HttpRequest, c As String) As String Dim ret As String = "" If Not IsNothing(r.Form) Then If Not IsNothing(r.Form.Item(c)) Then ret = r.Form.Item(c) Return ret End Function Public Shared Function GetPostBackDate(ByVal r As HttpRequest, c As Control) As String Dim ret As String = "" If Not IsNothing(r.Form) Then If Not IsNothing(r.Form.Item(c.UniqueID)) Then ret = r.Form.Item(c.UniqueID) Dim retS As String = "" If IsDate(ret) Then retS = ret Return retS End Function Public Shared Function GetPostBackDateString(ByVal r As HttpRequest, c As String) As String Dim ret As String = "" If Not IsNothing(r.Form) Then If Not IsNothing(r.Form.Item(c)) Then ret = r.Form.Item(c) Dim retS As String = "" If IsDate(ret) Then retS = ret Return retS End Function Public Shared Function GetPostBackCheck(ByVal r As HttpRequest, c As Control) As Boolean Dim ret As String = "" If Not IsNothing(r.Form) Then If Not IsNothing(r.Form.Item(c.UniqueID)) Then ret = r.Form.Item(c.UniqueID) Dim retS As Boolean = False If ret = "on" Then retS = True Return retS End Function Public Shared Function GetPostBackCheckString(ByVal r As HttpRequest, c As String) As Boolean Dim ret As String = "" If Not IsNothing(r.Form) Then If Not IsNothing(r.Form.Item(c)) Then ret = r.Form.Item(c).ToString End If End If Dim retS As Boolean = False If ret = "on" Or ret = "True" Or ret = "true" Or ret = "1" Then retS = True Return retS End Function Public Shared Function UpdateValueSwitch(u As Boolean, d As String, p As String) As String Dim ret As String = "" If u = True Then If p = "" Then ret = d Else ret = p End If Else ret = d End If Return ret End Function Public Shared Function ClearInt(v As String) As Int64 Dim i As Int64 = 0 If IsNumeric(v) Then i = v Return i End Function Public Shared Function ClearDou(v As String) As Double Dim i As Double = 0 If IsNumeric(v) Then i = v Return i End Function Public Shared Function SQLStr(v As String) As String Dim i As String = "NULL" If Not IsNothing(v) Then If v <> "" Then i = "N'" + Replace(v, "'", "''") + "'" Return i End Function Public Shared Function SQLInt(v As String) As String Dim i As String = "NULL" If Not IsNothing(v) Then If IsNumeric(v) = True Then i = Replace(v, "'", "''") Return i End Function Public Shared Function SQLDate(v As String) As String Dim i As String = "NULL" If Not IsNothing(v) Then If IsDate(v) = True Then i = "'" + Date.Parse(v).ToString("yyyy-MM-dd HH:mm:ss") + "'" Return i End Function Public Shared Function SQLBit(v As String) As String Dim i As String = "0" If Not IsNothing(v) Then If v = "True" Then i = "1" Return i End Function
Cosa sta facendo
Sappiamo che la maggior parte delle persone viene qui per ottenere alcuni esempi e poi adattarlo alle proprie esigenze, ma quelli di voi che vogliono capire cosa sta facendo continuano a leggere.
GetPostBackValue, GetPostBackCheck e GetPostBackDate restituiranno il valore rilevante dai valori passati, che sono la richiesta (contiene tutte le informazioni pubblicate) e il controllo (il valore del modulo). Le versioni di verifica e data controllano semplicemente che il tipo di dati fornito sia rilevante.
ClearInt, ClearDou, ClearDate restituiscono il tipo di dati pertinente da una stringa, utilizzata come opzione di base per assegnare i dati che devono essere di un tipo impostato.
SQLStr, SQLInt, SQLBit e SQLDate vengono utilizzati come modificatori per restituire stringhe per SQL dinamico che prevengono potenziali attacchi di SQL injection.
UpdateValueSwitch imposta semplicemente un valore restituito che dipende dal valore true o false fornito, con il valore d (predefinito) che sovrascrive il valore p (postback) quando il valore p è vuoto.