【发布时间】:2011-03-02 16:29:51
【问题描述】:
我在客户端有一些验证 JS 代码,必须在 PostBack 之前执行。 如果此验证码返回“false”,则无需回发。 如何禁用它?
【问题讨论】:
标签: asp.net validation postback
我在客户端有一些验证 JS 代码,必须在 PostBack 之前执行。 如果此验证码返回“false”,则无需回发。 如何禁用它?
【问题讨论】:
标签: asp.net validation postback
请记住,真正的验证应该始终在服务器上进行。您在客户端所做的任何事情都只是为了节省一些 http 往返行程而进行的优化。
使您的客户端和服务器端验证与 ASP.Net 保持同步的最简单方法是使用验证控件。验证控件将同时进行客户端和服务器端验证,这样如果客户端上的验证失败,它就永远不会发布到服务器。
如果您想做一些标准验证控件未涵盖的操作,您应该使用 CustomValidator 或从 BaseValidator 继承您自己的控件。
【讨论】:
在您的 ASP 按钮上设置 OnClientClick='YourJSValidationFunction'。
然后让 YourJSValidationFunction 返回 true 或 false。
False 会阻止回发
示例: http://vijaymodi.wordpress.com/2007/06/08/button-onclick-and-onclientclick-2/
【讨论】:
如果回发是由按钮触发的,那么您可以执行以下操作:
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return IsValid();" />
如果 IsValid 函数返回 false,则回发将被阻止。
如果您想捕获所有回发而不考虑哪个控件触发它,那么您可以使用<form id="form1" runat="server" onsubmit="return IsValid();">
【讨论】:
你使用什么:一些验证器或一些带有 onclick 事件的按钮? 如果你有
<input type="button" id="btnID" runat="server" onclick="CheckValid();"/>
function CheckValid()
{
if(!IsValid) return false;//then no post back occer
}
【讨论】:
根据您尝试的验证,您也可以使用 CustomValidator 控件。这还可以让您轻松地在服务器端实现验证逻辑。
【讨论】: