我正在使用asp.net验证控件制作一个asp.net页面。如果验证失败,我想显示一个div(在客户端上)。我在哪里这样做?我找不到在客户端上访问OnValidate事件的方法。我可以在服务器上执行此操作,但我宁愿在客户端上执行此操作。
答案 0 :(得分:0)
您可以使用Page.RegisterClientScriptBlock Method] 1
从服务器端代码调用javascript函数。像
String scriptString = "<script type='text/javascript'>MakeDivVisible();</script>";
this.RegisterClientScriptBlock("clientScript", scriptString);
然后在javascript函数中,您可以将div的显示更改为
document.getElementById("divId").style.display = 'block';
或者如果你给div属性runat =“server”那么你可以从服务器端代码访问div并将其显示更改为阻止
divId.Style["display"] = "block";
答案 1 :(得分:0)
使用ASP.NET custom validator。
如果由于某种原因您不能/不想这样做,请使用ClientScriptManager.RegisterOnSubmitStatement方法,并确保在客户端脚本中返回false,如果您正在验证的内容失败。
答案 2 :(得分:0)
您需要在客户端和服务器上进行验证,因为您无法保证客户端已启用JavaScript。以下显示了在客户端实现此目的的步骤,因为在服务器端实现此操作应该是微不足道的。
给出一个简单的div,如下所示:
<div id="divErrors" runat="server" style="display: none;">
This should only appear when validation fails.
</div>
将以下JavaScript添加到您的页面:
<script language="javascript" type="text/javascript">
function showErrors() {
if (!Page_IsValid) {
document.getElementById('divErrors').style.display = 'block';
} else {
document.getElementById('divErrors').style.display = 'none';
}
}
</script>
最后,注册一个调用这个新的showErrors函数的提交脚本(在Page_Load事件中):
If Not Page.IsPostBack() Then
Dim scriptName As String = "OnSubmitScript"
Dim scriptType As Type = Me.GetType()
Dim script As ClientScriptManager = Page.ClientScript
If Not script.IsOnSubmitStatementRegistered(scriptType, scriptName) Then
script.RegisterOnSubmitStatement(scriptType, _
scriptName, "showErrors();")
End If
End If