views:

309

answers:

2

Hello,

I do not like to use the calendar from .NET, so I would like to have one Web User Control with 3 drop down boxes, day, month, year. [CODE DONE].

I want to be able to call this Control and initialize it with start year and end year, and with or without selected date.[CODE DONE].

This control will see if there is one valid date selected and return bool [CODE DONE].

Then in my web page I would like to able to see if that web user control is valid, in a way that I can use with the normal .NET validation (associate one required field), the problem is that I don't know where to put this code and retrieve it to the validation control on the web page. [CODE NOT DONE].

How can I do this?

A: 

You want to use the CustomValidator control for this. See this tutorial that explains how to implement it with both a client-side and server-side version of the validation.

olle
CustomValidator will need to be written inside my Web page, this means if I use my "Calendar Web User control" in many pages, then I'll need to write CustomValidator all around the code. This is not what I am looking for. I would like to be able to associate the required field validator with my Web User Control. The necessary code for this stays inside the User Control.
SmartStart
you might want to edit the question to reflect this.
olle
+1  A: 

There are two steps to integrating your custom server controls with the validation framework.

(1) Server side: you'll need to add a ValidationPropertyAttribute to your class, so the validation framwework knows what to look at when validating:

[ValidationProperty("SelectedDate")]
public class MyDateControl : WebControl
{
    public DateTime? SelectedDate { get { ... } set { ... } }
}

(2) To hook up with client side validation, you have to make sure there's an input tag associated with your control. One way of doing that is rendering an <input type="hidden"> as the first child tag of your web control's HTML. The validation framework will pick up on that. The remaining thing to do here, is to set this hidden field through JavaScript each time your one drop downs changes.

This way, you can tie in with the existing validation controls. If you want different way to validate, you should look at a CustomValidator.

Ruben