Whether to use Page_IsValid or Page_ClientValidate() (for Client Side Events)

asp.net

Solution

In case of button click, `Page_ClientValidate()` is called when (and only when) the button's `CausesValidation` is set to `true`.

`Page_ClientValidate()` is part of process of doing postback, so it is called within button's click. I rely on `Page_IsValid` only in a scope of a function after calling `Page_ClientValidate()`. Otherwise I always call `Page_ClientValidate()`.

Comment: calling `Page_ClientValidate()` repeatedly may cause the page to be too obtrusive (multiple alerts etc.). That's why it's good to have a custom validate function that takes care of all validation.

Problem

I have following code inside a button click handler. Both approaches work fine. The `Page_ClientValidate()` causes an extra validation check and do processing whereas `Page_IsValid` makes use of existing property. QUESTIONS - In case of button click, is it always guaranteed that `Page_IsValid` would have been calculated by that time? If is not guaranteed, we need to call `Page_ClientValidate()` explicitly. - What are the events that happen before `Page_IsValid` is set? For such events we should not rely on `Page_IsValid` UPDATE Is it assured that the button click event handler (in JavaScript) will be called only after the validation part is completed (i.e., after Page_ClientValidate() was invoked as part of validation) ? If this is assured, can I rely on Page_IsValid? SCRIPT ``` $('#btnSave').click(function (e) { //Aproach 1 var isValid = Page_ClientValidate(''); if (isValid) { //Do reamining work } //Aproach 2 if (Page_IsValid) { //Do reamining work } }); ``` REFERENCES: - Hide redundant error message in ASP.Net ValidationSummary - Validator causes improper behavior for double click check - Page_ClientValidate is not defined - Page_ClientValidate is validating multiple times. - MSDN - ASP.NET Validation in Depth

Original source

Related problems