我有我的網站上用戶可以選擇的選項列表。我想要做的是提供功能來限制用戶基於他在CheckBoxList中的選擇獲得的內容量。 一旦他選擇了他想要的東西,他會點擊保存並將他的選擇寫入數據庫。 CheckBoxList最初從Modules表中填充。這提供了用戶可以選擇的模塊列表。 當他點擊保存時,代碼需要遍歷這個CheckBoxList並「挑選」CheckBox的值,而忽略那些沒有的值。獲取CheckBoxList中每個項目的Checked值
問題是,無論CheckBox是否被選中,調試器都會爲CheckBoxList.Items(i).Selected
屬性返回一個False
值。
這裏是我的代碼:
注:我知道這裏的SQL代碼是開放的注入攻擊。我被告知我不應該關注它,儘管通常情況下,我會以不同的方式做。
Private Sub AddUpdateOrg(ByVal OrganizationName As String, ByVal Action As String, Optional ByVal Target As Integer = Nothing)
' ###############################################################
' # ADD OR UPDATE AN ORGANIZATION #
' # ============================================================#
' # PARAMETERS #
' # ---------- #
' # OrganizationName As String #
' # The organization name that is to be stored in the database. #
' # #
' # Action As String #
' # What action will be taken by this procedure, add or update. #
' # #
' # Optional Target As Integer (Default: Nothing) #
' # If updating an existing record, specify the OrganizationID #
' # of the target organization. #
' ###############################################################
' Get the list of Modules selected for this organization
Dim ModuleList As New List(Of Integer)
For i As Integer = 0 To chkModules.Items.Count - 1
If chkModules.Items(i).Selected Then
ModuleList.Add(chkModules.Items(i).Value)
End If
Next
Dim sql As String = Nothing
Select Case Action
Case "Add"
sql = "insert into Organizations(OrganizationName) values ('" & OrganizationName & "')"
Case "Update"
sql = "update Organizations set OrganizationName = '" & OrganizationName & "' " & _
"where OrganizationID = " & Target
End Select
Dim dr As SqlDataReader = d.GetReader("select * from OrgModules where OrgID = " & Target)
If dr.HasRows Then
dr.Close()
UpdateModules(Target, ModuleList, "update")
Else
dr.Close()
UpdateModules(Target, ModuleList, "insert")
End If
d.DoCommand(sql)
End Sub
它可能是此行爲是從保存按鈕回發的結果。如果是這種情況,我不確定如何解決它,所以任何幫助將不勝感激。
編輯1經過對代碼的進一步檢查,我重新考慮了此問題是由回發引起的,因爲CheckBoxList未在頁面加載時綁定。
誰曾告訴過你,你不應該關注SQL注入攻擊,這是錯誤的。 – Curt
@Curt正確,但與我的情況無關。 – Ortund