views:

54

answers:

1

On an ASP.NET page, I am using the same form for login and registration. There are two login fields and seven registration fields. Something like this:


txtUsername | txtPassword

txtNewUsername | txtNewPassword | txtNewPasswordRepeat | txtFirstName | txtLastName | txtPhone | txtEmail

btnSubmit


In each case, all the fields are compulsory (ie username and password are compulsory for logging in, and the other seven fields are compulsory for a new registration). There is a single submit button. This layout of the form is imposed by the client and is not open to modification.

Now, my question is, how to validate the form? Initially, I cooked up a customized server-side validation system, but the client insists on using the standard asp.net validation controls (including the custom validator if necessary).

To validate the form, first I have to determine if the client is doing login or validation, and only then can I decide whether to validate one set of fields or another. So the first operation is to see if the user has filled in username or newUsername and use that to determine whether a login or a new registration is taking place. Since there is a single submit button, I cannot use validation groups to distinguish between the two sets of controls.

I thought about using a custom validator for the whole thing, but it is connected to a single control, so that does not solve the problem. I also thought about creating a new validation control, but again the problem is the same - any class inheriting from WebControls.BaseValidator is connected to a single form control.

Given the above constraints, what to do? Any suggestions welcome...

A: 

use the buttons onclientclick event and change the validation group of the button in javascript

Letseatlunch
Good idea, but adding functionality to the button is not an option in this case. All the form fields I mentioned above are inside a single custom user control. The submit button is not in the user control, it is part of the parent page, so I can't place any user-control-specific functionality into it.
draconis