如何使用asp.net中的RegisterForEventValidation注册数据以进行验证

时间:2010-06-10 17:54:26

标签: asp.net javascript

我想知道在asp.net中使用RegisterForEventValidation的方法

我的问题是这个。

如果我启用了事件验证,那么使用javascript更改控件,然后将信息发送回服务器会引发错误。

但是如果我禁用事件验证,则控件中存在/选择的数据在后面的代码中的事件处理程序中不可用。

那么,如何解决这些问题?

此外,是否有任何好文章能够详细解释问题和解决方案?尝试使用谷歌搜索。遇到过很多文章。但没有任何东西符合我的期望。

进步很小。

如果我执行以下操作,则事件验证错误消失,但是无法在按钮单击后面的代码中获取所选值(在下拉列表中选择“1”之后,因为现在我只注册了值)

我遇到运行时错误 - 当我尝试访问后面的代码中的下拉列表中的选定值时,无法将字符串转换为double(我相信首先没有传递任何值的原因)。

对这里可能出现的问题有所了解!?谢谢!

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

1 个答案:

答案 0 :(得分:0)

你已经得到了它。 DropDownList.SelectedValue始终是System.String类型。

您必须在btnId_Click方法中将String转换为整数。

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