Кнопка ссылки asp.net, предотвращающая обратную передачу - PullRequest
0 голосов
/ 01 ноября 2010
<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 ]

1 голос
/ 01 ноября 2010

Если вы хотите предотвратить обратную передачу, вам следует выполнить проверку клиента на стороне клиента, добавив пользовательскую функцию проверки JavaScript в свой элемент управления validator. Это описано в этом сообщении в блоге .

Если ваша логика проверки может выполняться только на сервере, вам придется разрешить обратную передачу, но обернуть весь код, который вы не хотите запускать, например.

if (Page.IsValid) { ... }
0 голосов
/ 01 ноября 2010

Я вижу, что вы проверяете наличие дубликатов, единственный способ проверить их, не вызывая обратную передачу, - это сделать вызов 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
        }
    })
});
...