ASP.NET で HTML PostBack データを簡単に取得
柔軟、強力、安全
アプリケーション開発段階で、コントロールの通常のライフ サイクルよりも前にポスト データを取得する必要がある場合がいくつかあります。対処すべき主要なコーディングの問題ではありませんが、モジュールをできるだけ小さくしたかったのです。
切り替え機能と組み合わせると、状況に応じてデータ ソースまたはポストバックからデータをプルするようにアプリケーションに指示できます。
いくつかのケースで実稼働環境でこれを使用しており、Ousia CMS アプリケーション内で自由に使用されています。
- 完全に更新可能な asp:GridView コントロールを作成し、Excel シートをほぼシミュレートする
- カスタム フォーム asp:DropDown の選択した値をエラーなしで設定する
- アプリケーションからセッション状態を削除してペイロードを削減する
- アプリケーションの早期更新 (コントロールが完全に作成される前)
- データをサナタイズし、正しいデータ型を返します。
以下にコードを設定し、後で詳細に進みます。
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
何をしているのか
大部分の人がここに来て、いくつかの例を取得し、それを必要に応じて調整することを知っていますが、それが何をしているのかを知りたい人は読み続けてください.
GetPostBackValue、GetPostBackCheck、および GetPostBackDate は、渡された値 (リクエスト (投稿されたすべての情報を含む) とコントロール (フォーム値)) から関連する値を返します。 check および date バージョンは、提供されたデータ型が適切であることを確認するだけです。
ClearInt、ClearDou、ClearDate は、文字列から関連するデータ型を返します。これは、セット型である必要があるデータを割り当てるための基本的なスイッチとして使用されます。
SQLStr、SQLInt、SQLBit、および SQLDate は、潜在的な SQL インジェクション攻撃を防止する動的 SQL の文字列を返すための修飾子として使用されます。
UpdateValueSwitch は、提供された true または false に応じて戻り値を設定するだけで、p 値が空白の場合は d (デフォルト) 値が p (ポストバック) 値をオーバーライドします。