ASP.Net validation controls behaviour - asp.net

Asp.net validation controls generates client-side javascript that validates controls.
I decided to have a look into the ASP.NET validation JavaScript and I can see there is a function that hooks into the onchange events for controls to make sure the validation script runs when a values is changed.
My question:
Is there a way to disable this onchange validation? I want the validation to be done on the submit and then show the necessary error messages.
Thanks

Simply set:
EnableClientScript="False"
On the control.

Related

How to except a control from validating when use ASP.NET validation controls?

I have some Textboxs in my .aspx page which has some validation controls (for example requiredValidator control). I want to execute these validation controls when I click only on a special control but not others.
What should I do?
Use CausesValidation=False on the controls which should not trigger validation.
You can also use validation-groups to sepcify what should be validated.

Validation of .net form

Is it possible to use javascript validation and asp.net validators (required field validator) simultaneously on a single button click. Please help me
ASP.NET validators support clientside validation.
Have a look: ASP.NET Validation in Depth, chapter "Client-Side Validation"
You need to set EnableClientScript to true (but it's the default value anyway).
So the RequiredFieldValidator checks on the client side if the user entered something.

Invalid postback or callback argument error when submitting form with Button but not with LinkButton

I have a form where I dynamically populate a DropDownList using Jquery's ajax function to retrieve a list of values from a web service. I originally had a Button control which submitted the form. This caused the "exception:Invalid postback or callback argument. Event validation is enable...." error.
After researching options, such as disabling event validation (bad) and registering for event validation (which would not work in this case) the best option seemed to be to swap the Button control for a LinkButton control. I did this and, sure enough, it works fine now.
My question is...why?
What is different about the LinkButton that means that it does not cause the event validation error and have I, by changing to a LinkButton, introduced a new security risk because event validation isn't happening?
The postback validation error is happening because the data you send back at the postback is no the same than when it was sent by the server.
You should take a look at this blog post by Scott K. Allen. He suggests to add all the possible values for your dropdown in the Render event for your web page.
You could also create your own version of the DropDownList since it won't require event validation as this guy suggests.
My personnal take is that you might have to rethink how you interact with your data. If you need to feed dynamically your DropDownList and you use ASP.NET WebForms then you are required to have a PostBack for that. You could use a UpdatePanel to make it feel "Ajax" if you want.

Custom validator only fired on first button click?

I have a custom validator and some other validators on the page. But whenever I click the submit button for first time it only fires the custom validator and when I click the button for second time it's validating rest of the validators. Please let me know if you have any solution.
Thanks
Check your Page_Load to make sure you are not hiding or enabling something after the second call. I had a similar problem before and it confused the heck out of me until I realized I was manipulating a Panel in the Page_Load that contained the validator.
Other than that, you would need to post code (your Page_Load and Click event).
On Client Side when
OnClientClick="return SomeCustomClientCode();"
Is called, asp.net validators e.g required field validators are disabled and it does not gets listed in validators collection and does not validate the field validated by this validator and page post backs if custom validation passes.
To avoid this explicitly enable asp.net validators in Custom validation code or else where so that it gets activated before page postback or in the begiining of custom validation as follows:
ValidatorEnable(document.getElementById('<%=rfvDDLStatus.ClientID%>'), true);
rfvDDLStatus ==> required field validator which was not firing.. ValidatorEnable ==> Client API to enable asp.net validator

Creating custom ASP.NET validator

I have created a custom control and a custom validator (extending BaseValidator). On custom control I have set ValidationProperty("Values"). The problem is that validation doesn't work when postback is sent unless I execute Page.Validate(). And when I call Page.Validate() all validators are executed which is not what I would expect on postback.
How do I create custom validator which would be executed when control value changes and validates just that control?
That is not how validators work. Unless you are using a ValidationGroup setting, all the validators on your page will automatically fire. You do NOT have to explicitly call Page.Validate(). You DO need to wrap your code in a check like this, however:
if(Page.IsValid)
{
//do something here
}
Unlike client-side validators, the server-side validation does NOT prevent the page from posting back and processing events as normal.
To create a control which only validates when the control value changes would require a bit of hackery, since the change event fires after the validators have been executed.
Have you tried using validation groups?

Resources