2010-06-10 80 views
3

使用RegisterForEventValidation驗證數據,我想知道如何註冊在asp.net

我的問題是這在asp.net使用RegisterForEventValidation的方法。

如果我啓用eventvalidation,然後更改使用JavaScript的控件,然後發佈信息回服務器稍後引發錯誤。

但是,如果我禁用事件驗證,則在代碼後面的事件處理程序中,控件中存在/選擇的數據不可用。

那麼,應該如何解決這些問題呢?

此外,有沒有什麼好的文章能夠詳細解釋問題和解決方案?試圖用Google搜索。遇到很多文章。但沒有什麼符合我的期望。

小進步。

如果我做了以下事件,事件驗證錯誤消失,但無法在按鈕單擊後的代碼中獲取選定值(在下拉列表中選擇「1」後,因爲現在我只註冊了該值)

我得到一個運行時錯誤 - 無法從字符串轉換爲雙倍,當我嘗試訪問下拉代碼後選擇的值(我相信是沒有價值傳遞在第一位)。

有什麼想法可能會出錯在這裏!?謝謝!

Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter) 
    Page.ClientScript.RegisterForEventValidation(Me.ddldobddId.UniqueID, "1") 
    MyBase.Render(writer) 
End Sub 

Protected Sub btnId_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnId.Click 
    If CType(Me.ddldobddId.SelectedValue, Integer) = 0 -> Throws the error 
End Sub 

回答

0

你已經非常明白了。 DropDownList.SelectedValue總是一個System.String類型。

您必須在您的btnId_Click方法中將字符串轉換爲整數。

Protected Sub btnId_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnId.Click 
Dim convertedSelectedValue As Integer 
convertedSelectedValue = Convert.ToInt32(Me.ddldobddId.SelectedValue) 
End Sub