Most of the times we have requirements of adding different client side validations on the web pages and the easiest way to achieve this in ASP.Net is to use the existing set of validator controls.
In SharePoint when we design custom webparts which takes some data as input, we might need to add some client side validations using ASP.Net validator controls, but there are a few things that always need to be taken care of while using ASP.Net validator controls within SharePoint custom webparts.
1. Within a webpart we might have more than one control triggering server side postbacks. In this case the validator controls will validate with each and every postback, but the actual need might be to only validate the form with a single postback event, let’s say through the “SUBMIT” button. To avoid this, one need to set the CausesValidation property to false for all those controls causing server side postabacks where you do not want the form to get validated.
2. A SharePoint page can generally contain multiple webparts. So, if we have an ASP.Net validator control integrated within one webpart it’s always going to create issues with the postback events from within other webparts present on the same page. To overcome this issue and restrict the validation to a specific webpart, ValidationGroup property can be used with a unique name within a specific webpart. All the controls (validator controls and controls to be validated) coming under a common validation logic should have the same ValidationGroup name.
3. After having all these checks in place, there still remains a big problem which needs to be handled for ASP.Net validators within SharePoint. With ASP.Net validators within a webpart, when you try to edit the webpart properties, it does not allow you to save the changes within the property pane because of the validators (even with ValidationGroups set).
To fix this you need to check for the Form Mode within the Page Load event of the webpart and then disable the ASP.Net validator controls when the form is in either EDIT or NEW mode.
If SPContext.Current.FormContext.FormMode = SPControlMode.Edit
Or SPContext.Current.FormContext.FormMode = SPControlMode.New Then
'Set the visibility of the required field control to False
Note: From the above mentioned points, Point 1 & 2 are generic points which can be followed (or needs to be followed) inside general ASP.Net web pages as a better programming practice.