2010-11-01 3 views
0
<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" /> 

Я проверка дубликатов, используя пользовательский валидатор (на стороне сервера код) Если валидатора показывает стороне сервера ошибок кнопка ссылка не должна перенаправлять на страницу.asp.net предотвращения постбэк

Мне нужно остановить пост, когда срабатывает валидатор.

+0

Что вы хотите сказать? – egrunin

+0

Мне нужно остановить пост, когда срабатывает валидатор. – skamale

+0

Я думаю, что вы хотите что-то проверить в Serverside, и если он не работает, он должен остаться на той же странице? – kbvishnu

ответ

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 
     } 
    }) 
}); 
1

Если вы хотите предотвратить обратную передачу, вы должны сделать клиентскую часть проверки, добавив пользовательскую функцию проверки javascript к вашему элементу проверки. Это описано в this blog post.

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

if (Page.IsValid) { ... } 
Смежные вопросы