Posts
27
Comments
54
Trackbacks
0
Page_BlockSubmit - reset it to False, if there is a scenario when page doesn't postback on validation error

Recently, I was facing a problem where if there was a validation error, and if I changed the state of checkbox it won't postback on first attempt. But when I uncheck and check again , it postbacks on second attempt...this is some quirky behaviour in .ASP.Net platform.

The solution was to reset Page_BlockSubmit flag to false and it works fine.

The following explanation is from

http://lionsden.co.il/codeden/?p=137&cpage=1#comment-143

 

Submit button on the page is a member of vgMain, so automatically it will only run the validation on that group. A solution is needed that will run validation on multiple groups and block the postback if needed.

Solution

Include the following function on the page:

function DoValidation()
{
   //validate the primary group
   var validated = Page_ClientValidate('vgPrimary ');
 
   //if it is valid
   if (validated)
   {
      //valid the main group
      validated = Page_ClientValidate('vgMain');
   }
 
   //remove the flag to block the submit if it was raised
   Page_BlockSubmit = false;
 
   //return the results
   return validated;
}

Call the above function from the submit button’s OnClientClick event.

<asp:Button runat="server" ID="btnSubmit" CausesValidation="true" 
   ValidationGroup="vgMain" Text="Next" OnClick="btnSubmit_Click"
   OnClientClick="return DoValidation();"  />

What is Page_BlockSubmit

When the user clicks on a button causing a full post back, after running Page_ClientValidate ASP.NET runs another built in function ValidatorCommonOnSubmit. Within Page_ClientValidate, Page_BlockSubmit is set based on the validation. The postback is then blocked in ValidatorCommonOnSubmit if Page_BlockSubmit is true. No matter what, at the end of the function Page_BlockSubmit is always reset back to false.

If a page does a partial postback without running any validation and Page_BlockSubmit has not been reset to false, the partial postback will be blocked. In essence the above function, RunValidation, acts similar to ValidatorCommonOnSubmit. It runs the validation and then returns false to block the postback if needed. Since the built in postback is never run, we need to reset Page_BlockSubmit manually before returning the validation result.

posted on Thursday, March 22, 2012 3:59 PM Print
Comments
Gravatar
# re: Page_BlockSubmit - reset it to False, if there is a scenario when page doesn't postback on validation error
Tom
4/26/2014 11:47 AM
Thank you, thank you, thank you - I've been pulling my (remaining) hair out trying to figure out this one!!
:-)
Gravatar
# re: Page_BlockSubmit - reset it to False, if there is a scenario when page doesn't postback on validation error
Vipin
5/13/2014 1:25 PM
Glad I could help :)

Post Comment

Title *
Name *
Email
Comment *