Validating CheckBoxes on the ClientSide

M

mc

I've not been able to get a Check box to client side validated on postback. with my changes I can
get it to work on the serverside ok but not on the client.

I have created a new control as below:-

[ValidationProperty("ValidationValue")]
public class ValidifiableCheckBox: CheckBox
{
public string ValidationValue{
get { return (this.checked ? bool.TrueString : string.Empty); }
}
}

this gives me a CheckBox that the Validators will except (rather than throwing an exception about
not being able to validate them), If I use it with a RequiredFieldValidator, the Serverside events
valdiation works however it doesn't seem to trap it on the client, my page code is bellow: -

<myControls:ValidifiableCheckBox ID="cbAgree" runat="server"/>
<asp:RequiredFiledValidator ID="rfvAgree" runat="server" ControlToValidate="cbAgree"
ErrorMessage="Oh Dear" Text="*"/>
<asp:ValidationSummary ID="vsAgree" runat="server" ShowMessageBox="true" ShowSummary="false"/>

Any ideas?

Why did microsoft not make the CheckBox control validatable?
 
P

Patrice

Well a checkbox is basically either checked or unchecked so having the
special case were the user has to check the checkbox were likely not MS top
priority (my understainding is that you want to display a checkbox that is
necessarily checked).

Also I would try a compareValidator rather than a requiredfield validator
(you want the value to be true, "on" or whatever else is used for a checked
box, if the box is unchecked it doesn't mean IMO that a value hasn't been
provided but that the value provided by the user is just "false").

Finally if you have to create your own validator, see for example
http://aspnet.4guysfromrolla.com/articles/073102-1.aspx. Server validation
is fine but AFAIK you have to provide client side validation code if you
want to validate this client side (server side code runs server side and
can't be run or won't be transformed automatically for the client side
handling).
 
M

mc

Thanks for your response, Whilst waiting for a response I've already investigated the custom
validator, however, when I try to get the "args.Value" in my clientside code I always get the value
"on" regardless of state.

Here is my code from my custom validator can you spot any errors?

protected void Page_Load(object sender, EventArgs e){
string csValidFunc = "function ClientValidateVCB(source, args){" + Environment.NewLine +
" args.IsValid = (args.Value == '" + bool.TrueString + "');" + Environment.NewLine +
"}";
ClientScript.RegisterClientScriptBlock(this.GetType(), "ClientValidateVCB", csValidFunc, true);
}

protected void cvAgree_ServerValidate(object source, ServerValidateEventArgs args)
{
args.IsValid = (args.Value == bool.TrueString);
}
Well a checkbox is basically either checked or unchecked so having the
special case were the user has to check the checkbox were likely not MS top
priority (my understainding is that you want to display a checkbox that is
necessarily checked).

Also I would try a compareValidator rather than a requiredfield validator
(you want the value to be true, "on" or whatever else is used for a checked
box, if the box is unchecked it doesn't mean IMO that a value hasn't been
provided but that the value provided by the user is just "false").

Finally if you have to create your own validator, see for example
http://aspnet.4guysfromrolla.com/articles/073102-1.aspx. Server validation
is fine but AFAIK you have to provide client side validation code if you
want to validate this client side (server side code runs server side and
can't be run or won't be transformed automatically for the client side
handling).

--
Patrice


I've not been able to get a Check box to client side validated on
postback. with my changes I can get it to work on the serverside ok but
not on the client.

I have created a new control as below:-

[ValidationProperty("ValidationValue")]
public class ValidifiableCheckBox: CheckBox
{
public string ValidationValue{
get { return (this.checked ? bool.TrueString : string.Empty); }
}
}

this gives me a CheckBox that the Validators will except (rather than
throwing an exception about not being able to validate them), If I use it
with a RequiredFieldValidator, the Serverside events valdiation works
however it doesn't seem to trap it on the client, my page code is
bellow: -

<myControls:ValidifiableCheckBox ID="cbAgree" runat="server"/>
<asp:RequiredFiledValidator ID="rfvAgree" runat="server"
ControlToValidate="cbAgree" ErrorMessage="Oh Dear" Text="*"/>
<asp:ValidationSummary ID="vsAgree" runat="server" ShowMessageBox="true"
ShowSummary="false"/>

Any ideas?

Why did microsoft not make the CheckBox control validatable?
 
S

Steven Cheng[MSFT]

Hi MC,

As for ASP.NET CheckBox control, it does be a particular one which can not
be used directly by any built-in validators except the CustomValidator
control. Also, even for custom validator, you still need to particularly
customize the validation function(client script). Here is a forum article
which provide an example on how to use custom valiator to validate checkbox:

#Control 'CheckBox1' referenced by the ControlToValidate property
http://www.syncfusion.com/FAQ/aspnet/WEB_c18c.aspx#q464q

and another article provide good example on impleneting custom validator:

#Implementing custom validation in ASP.NET with the CustomValidator class
http://www.kuam.com/techtalk/customvalidatorclass.htm

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead


This posting is provided "AS IS" with no warranties, and confers no rights.




--------------------
Date: Thu, 13 Dec 2007 13:08:24 +0000
From: mc <[email protected]>
Newsgroups: microsoft.public.dotnet.framework.aspnet
Subject: Re: Validating CheckBoxes on the ClientSide

Thanks for your response, Whilst waiting for a response I've already investigated the custom
validator, however, when I try to get the "args.Value" in my clientside code I always get the value
"on" regardless of state.

Here is my code from my custom validator can you spot any errors?

protected void Page_Load(object sender, EventArgs e){
string csValidFunc = "function ClientValidateVCB(source, args){" + Environment.NewLine +
" args.IsValid = (args.Value == '" + bool.TrueString + "');" + Environment.NewLine +
"}";
ClientScript.RegisterClientScriptBlock(this.GetType(),
"ClientValidateVCB", csValidFunc, true);
}

protected void cvAgree_ServerValidate(object source, ServerValidateEventArgs args)
{
args.IsValid = (args.Value == bool.TrueString);
}
Well a checkbox is basically either checked or unchecked so having the
special case were the user has to check the checkbox were likely not MS top
priority (my understainding is that you want to display a checkbox that is
necessarily checked).

Also I would try a compareValidator rather than a requiredfield validator
(you want the value to be true, "on" or whatever else is used for a checked
box, if the box is unchecked it doesn't mean IMO that a value hasn't been
provided but that the value provided by the user is just "false").

Finally if you have to create your own validator, see for example
http://aspnet.4guysfromrolla.com/articles/073102-1.aspx. Server validation
is fine but AFAIK you have to provide client side validation code if you
want to validate this client side (server side code runs server side and
can't be run or won't be transformed automatically for the client side
handling).

--
Patrice


I've not been able to get a Check box to client side validated on
postback. with my changes I can get it to work on the serverside ok but
not on the client.

I have created a new control as below:-

[ValidationProperty("ValidationValue")]
public class ValidifiableCheckBox: CheckBox
{
public string ValidationValue{
get { return (this.checked ? bool.TrueString : string.Empty); }
}
}

this gives me a CheckBox that the Validators will except (rather than
throwing an exception about not being able to validate them), If I use it
with a RequiredFieldValidator, the Serverside events valdiation works
however it doesn't seem to trap it on the client, my page code is
bellow: -

<myControls:ValidifiableCheckBox ID="cbAgree" runat="server"/>
<asp:RequiredFiledValidator ID="rfvAgree" runat="server"
ControlToValidate="cbAgree" ErrorMessage="Oh Dear" Text="*"/>
<asp:ValidationSummary ID="vsAgree" runat="server" ShowMessageBox="true"
ShowSummary="false"/>

Any ideas?

Why did microsoft not make the CheckBox control validatable?
 
P

Patrice

IMO the problem is that the checkbox input control doesn"t have a value
property. What is the bool variable you are referring to ?

IMO you should use somewhere the checked property (and you'll have to get
this value by yourself).

--
Patrice


mc said:
Thanks for your response, Whilst waiting for a response I've already
investigated the custom validator, however, when I try to get the
"args.Value" in my clientside code I always get the value "on" regardless
of state.

Here is my code from my custom validator can you spot any errors?

protected void Page_Load(object sender, EventArgs e){
string csValidFunc = "function ClientValidateVCB(source, args){" +
Environment.NewLine +
" args.IsValid = (args.Value == '" + bool.TrueString + "');" +
Environment.NewLine +
"}";
ClientScript.RegisterClientScriptBlock(this.GetType(),
"ClientValidateVCB", csValidFunc, true);
}

protected void cvAgree_ServerValidate(object source,
ServerValidateEventArgs args)
{
args.IsValid = (args.Value == bool.TrueString);
}
Well a checkbox is basically either checked or unchecked so having the
special case were the user has to check the checkbox were likely not MS
top priority (my understainding is that you want to display a checkbox
that is necessarily checked).

Also I would try a compareValidator rather than a requiredfield validator
(you want the value to be true, "on" or whatever else is used for a
checked box, if the box is unchecked it doesn't mean IMO that a value
hasn't been provided but that the value provided by the user is just
"false").

Finally if you have to create your own validator, see for example
http://aspnet.4guysfromrolla.com/articles/073102-1.aspx. Server
validation is fine but AFAIK you have to provide client side validation
code if you want to validate this client side (server side code runs
server side and can't be run or won't be transformed automatically for
the client side handling).

--
Patrice


I've not been able to get a Check box to client side validated on
postback. with my changes I can get it to work on the serverside ok but
not on the client.

I have created a new control as below:-

[ValidationProperty("ValidationValue")]
public class ValidifiableCheckBox: CheckBox
{
public string ValidationValue{
get { return (this.checked ? bool.TrueString : string.Empty); }
}
}

this gives me a CheckBox that the Validators will except (rather than
throwing an exception about not being able to validate them), If I use it
with a RequiredFieldValidator, the Serverside events valdiation works
however it doesn't seem to trap it on the client, my page code is
bellow: -

<myControls:ValidifiableCheckBox ID="cbAgree" runat="server"/>
<asp:RequiredFiledValidator ID="rfvAgree" runat="server"
ControlToValidate="cbAgree" ErrorMessage="Oh Dear" Text="*"/>
<asp:ValidationSummary ID="vsAgree" runat="server" ShowMessageBox="true"
ShowSummary="false"/>

Any ideas?

Why did microsoft not make the CheckBox control validatable?
 
M

mc

Thanks for that, this was the solution I stumbled across myself. However I was hoping that I would
be able to work with args.Value, and have clean generic functions is there not anything I could do
with my inherited control to make it correctly validatable?

Is there a bug or issue within asp.net which means the "Team" couldn't make the CheckBox validatable?

Thanks


MC
Hi MC,

As for ASP.NET CheckBox control, it does be a particular one which can not
be used directly by any built-in validators except the CustomValidator
control. Also, even for custom validator, you still need to particularly
customize the validation function(client script). Here is a forum article
which provide an example on how to use custom valiator to validate checkbox:

#Control 'CheckBox1' referenced by the ControlToValidate property
http://www.syncfusion.com/FAQ/aspnet/WEB_c18c.aspx#q464q

and another article provide good example on impleneting custom validator:

#Implementing custom validation in ASP.NET with the CustomValidator class
http://www.kuam.com/techtalk/customvalidatorclass.htm

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead


This posting is provided "AS IS" with no warranties, and confers no rights.




--------------------
Date: Thu, 13 Dec 2007 13:08:24 +0000
From: mc <[email protected]>
Newsgroups: microsoft.public.dotnet.framework.aspnet
Subject: Re: Validating CheckBoxes on the ClientSide

Thanks for your response, Whilst waiting for a response I've already

investigated the custom
validator, however, when I try to get the "args.Value" in my clientside

code I always get the value
"on" regardless of state.

Here is my code from my custom validator can you spot any errors?

protected void Page_Load(object sender, EventArgs e){
string csValidFunc = "function ClientValidateVCB(source, args){" +

Environment.NewLine +
" args.IsValid = (args.Value == '" + bool.TrueString + "');" +

Environment.NewLine +
"}";
ClientScript.RegisterClientScriptBlock(this.GetType(),

"ClientValidateVCB", csValidFunc, true);
}

protected void cvAgree_ServerValidate(object source,

ServerValidateEventArgs args)
{
args.IsValid = (args.Value == bool.TrueString);
}

top

is

validator

checked

been

validation
is fine but AFAIK you have to provide client side validation code if you
want to validate this client side (server side code runs server side and
can't be run or won't be transformed automatically for the client side
handling).

--
Patrice


"mc" <[email protected]> a écrit dans le message de
[email protected]...


I've not been able to get a Check box to client side validated on
postback. with my changes I can get it to work on the serverside ok but
not on the client.

I have created a new control as below:-

[ValidationProperty("ValidationValue")]
public class ValidifiableCheckBox: CheckBox
{
public string ValidationValue{
get { return (this.checked ? bool.TrueString : string.Empty); }
}
}

this gives me a CheckBox that the Validators will except (rather than
throwing an exception about not being able to validate them), If I use

it
 
M

mc

bool is not a variable. It is a reference to the static field "TrueString" of the bool type. See
here for a full explanation.

http://msdn2.microsoft.com/en-us/library/system.boolean.truestring(VS.71).aspx

The theory of my first post is that the control below, should give you a check box with the correct
value defined. so it can be used in the validators. It works server side but client side it fails.

[ValidationProperty("ValidationValue")]
public class ValidifiableCheckBox : CheckBox
{
public string ValidationValue{
get { return (this.checked ? bool.TrueString : string.Empty); }
}
}

it could also be validly defined as: -

[ValidationProperty("Wibble")]
public class CheckBoxWithValue : CheckBox
{
public string Wibble{
get { return (this.checked ? bool.TrueString : string.Empty); }
}
}
If in the ServerValidate you access args.Value you will get the output of Wibble, however this
doesn't change the client side functionality which always just returns "on". regardless of checked
state.
IMO the problem is that the checkbox input control doesn"t have a value
property. What is the bool variable you are referring to ?

IMO you should use somewhere the checked property (and you'll have to get
this value by yourself).

--
Patrice


Thanks for your response, Whilst waiting for a response I've already
investigated the custom validator, however, when I try to get the
"args.Value" in my clientside code I always get the value "on" regardless
of state.

Here is my code from my custom validator can you spot any errors?

protected void Page_Load(object sender, EventArgs e){
string csValidFunc = "function ClientValidateVCB(source, args){" +
Environment.NewLine +
" args.IsValid = (args.Value == '" + bool.TrueString + "');" +
Environment.NewLine +
"}";
ClientScript.RegisterClientScriptBlock(this.GetType(),
"ClientValidateVCB", csValidFunc, true);
}

protected void cvAgree_ServerValidate(object source,
ServerValidateEventArgs args)
{
args.IsValid = (args.Value == bool.TrueString);
}
Well a checkbox is basically either checked or unchecked so having the
special case were the user has to check the checkbox were likely not MS
top priority (my understainding is that you want to display a checkbox
that is necessarily checked).

Also I would try a compareValidator rather than a requiredfield validator
(you want the value to be true, "on" or whatever else is used for a
checked box, if the box is unchecked it doesn't mean IMO that a value
hasn't been provided but that the value provided by the user is just
"false").

Finally if you have to create your own validator, see for example
http://aspnet.4guysfromrolla.com/articles/073102-1.aspx. Server
validation is fine but AFAIK you have to provide client side validation
code if you want to validate this client side (server side code runs
server side and can't be run or won't be transformed automatically for
the client side handling).

--
Patrice


"mc" <[email protected]> a écrit dans le message de
[email protected]...


I've not been able to get a Check box to client side validated on
postback. with my changes I can get it to work on the serverside ok but
not on the client.

I have created a new control as below:-

[ValidationProperty("ValidationValue")]
public class ValidifiableCheckBox: CheckBox
{
public string ValidationValue{
get { return (this.checked ? bool.TrueString : string.Empty); }
}
}

this gives me a CheckBox that the Validators will except (rather than
throwing an exception about not being able to validate them), If I use it
with a RequiredFieldValidator, the Serverside events valdiation works
however it doesn't seem to trap it on the client, my page code is
bellow: -

<myControls:ValidifiableCheckBox ID="cbAgree" runat="server"/>
<asp:RequiredFiledValidator ID="rfvAgree" runat="server"
ControlToValidate="cbAgree" ErrorMessage="Oh Dear" Text="*"/>
<asp:ValidationSummary ID="vsAgree" runat="server" ShowMessageBox="true"
ShowSummary="false"/>

Any ideas?

Why did microsoft not make the CheckBox control validatable?
 
S

Steven Cheng[MSFT]

Thanks for your reply MC,

So far this seems a limitation due to the existing CheckBox control's
implementation. I suggest you post this issue to the product feedback
center so that the product team can receive feedback on this:

http://connect.microsoft.com/feedback/default.aspx?SiteID=210

Sincerely,

Steven Cheng

Microsoft MSDN Online Support Lead


This posting is provided "AS IS" with no warranties, and confers no rights.
--------------------
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,904
Latest member
HealthyVisionsCBDPrice

Latest Threads

Top