asp.net链接按钮阻止回发

时间:2010-11-01 10:00:39

标签: asp.net button hyperlink validation

<asp:LinkButton ID="lbnImages" runat="server" CssClass="link"  
    PostBackUrl="AddImage.aspx" CausesValidation="True"  
    ValidationGroup="Save">Images</asp:LinkButton>
<asp:CustomValidator ID="cstval" runat="server" ControlToValidate="txtName"
    ValidationGroup="Save" ErrorMessage ="Duplicate name"   
    OnServerValidate="Project_validation" />

我正在使用自定义验证程序(服务器端代码)检查重复项 如果服务器端自定义验证程序显示错误,则链接按钮不得重定向到页面。

我需要在验证器触发时停止发回。

2 个答案:

答案 0 :(得分:1)

如果要阻止回发,则应通过向验证程序控件添加自定义javascript验证功能来执行验证客户端。这在this blog post

中有所描述

如果您的验证逻辑只能在服务器上运行,则必须让回发发生,但包装您不希望运行的所有代码,例如:一个

if (Page.IsValid) { ... }

答案 1 :(得分:0)

我看到你正在检查重复项,验证它而不引起回发的唯一方法是进行ajax调用。

拨打某个服务,检查它是否重复,然后如果它无效则停止它。使用jQuery语法:

$("save_button").click(function(e){
    $.ajax({
        async: false, // will finish this request before executing anything else
        url: "validation_page",
        type: "POST",
        data: ({name: "value from a field"}),
        success: function(msg){
           if (msg != "ERROR") // whatever msg is not valid
               e.preventDefault(); // will not do the postback
        }
    })
});