Validating CheckBoxes on the ClientSide | | |
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? | | | | re: Validating CheckBoxes on the ClientSide
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" <mc@community.nospama écrit dans le message de news:
4761167e$1@mail.hmgcc.gov.uk... Quote:
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?
| | | | 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.GetTyp e(), "ClientValidateVCB", csValidFunc, true);
}
protected void cvAgree_ServerValidate(object source, ServerValidateEventArgs args)
{
args.IsValid = (args.Value == bool.TrueString);
}
Patrice wrote: Quote:
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" <mc@community.nospama écrit dans le message de news:
4761167e$1@mail.hmgcc.gov.uk...
> Quote:
>>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?
>
>
>
| | | | re: Validating CheckBoxes on the ClientSide
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...18c.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.
-------------------- Quote:
>Date: Thu, 13 Dec 2007 13:08:24 +0000
>From: mc <mc@community.nospam>
>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 Quote:
>validator, however, when I try to get the "args.Value" in my clientside
code I always get the value Quote:
>"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 + Quote:
>" args.IsValid = (args.Value == '" + bool.TrueString + "');" +
Environment.NewLine + Quote:
>"}";
>ClientScript.RegisterClientScriptBlock(this.GetTy pe(),
"ClientValidateVCB", csValidFunc, true); Quote:
>}
>
>protected void cvAgree_ServerValidate(object source,
ServerValidateEventArgs args) Quote:
>{
args.IsValid = (args.Value == bool.TrueString);
>}
>
>Patrice wrote: Quote:
>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 Quote: Quote:
>priority (my understainding is that you want to display a checkbox that
is Quote: Quote:
>necessarily checked).
>>
>Also I would try a compareValidator rather than a requiredfield
validator Quote: Quote:
>(you want the value to be true, "on" or whatever else is used for a
checked Quote: Quote:
>box, if the box is unchecked it doesn't mean IMO that a value hasn't
been validation Quote: Quote:
>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" <mc@community.nospama écrit dans le message de news:
>4761167e$1@mail.hmgcc.gov.uk...
>> Quote:
>>>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 Quote: Quote: Quote:
>>>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?
>>
>>
>>
>
| | | | re: Validating CheckBoxes on the ClientSide
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" <mc@community.nospama écrit dans le message de news:
47612ed4$1@mail.hmgcc.gov.uk... Quote:
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.GetTyp e(),
"ClientValidateVCB", csValidFunc, true);
}
>
protected void cvAgree_ServerValidate(object source,
ServerValidateEventArgs args)
{
args.IsValid = (args.Value == bool.TrueString);
}
>
Patrice wrote: Quote:
>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" <mc@community.nospama écrit dans le message de news:
>4761167e$1@mail.hmgcc.gov.uk...
>> Quote:
>>>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?
>>
>>
| | | | re: Validating CheckBoxes on the ClientSide
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
Steven Cheng[MSFT] wrote: Quote:
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...18c.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.
>
>
>
>
--------------------
> Quote:
>>Date: Thu, 13 Dec 2007 13:08:24 +0000
>>From: mc <mc@community.nospam>
>>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
> Quote:
>>validator, however, when I try to get the "args.Value" in my clientside
>
code I always get the value
> Quote:
>>"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 +
> Quote:
>>" args.IsValid = (args.Value == '" + bool.TrueString + "');" +
>
Environment.NewLine +
> Quote:
>>"}";
>>ClientScript.RegisterClientScriptBlock(this.GetT ype(),
>
"ClientValidateVCB", csValidFunc, true);
> Quote:
>>}
>>
>>protected void cvAgree_ServerValidate(object source,
>
ServerValidateEventArgs args)
> Quote:
>>{
> args.IsValid = (args.Value == bool.TrueString);
>>}
>>
>>Patrice wrote:
>> Quote:
>>>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
> Quote: Quote:
>>>priority (my understainding is that you want to display a checkbox that
>
is
> Quote: Quote:
>>>necessarily checked).
>>>
>>>Also I would try a compareValidator rather than a requiredfield
>
validator
> Quote: Quote:
>>>(you want the value to be true, "on" or whatever else is used for a
>
checked
> Quote: Quote:
>>>box, if the box is unchecked it doesn't mean IMO that a value hasn't
>
been
> >
validation
> Quote: Quote:
>>>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" <mc@community.nospama écrit dans le message de news:
>>>4761167e$1@mail.hmgcc.gov.uk...
>>>
>>>
>>>>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
> Quote: Quote:
>>>>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?
>>>
>>>
>>>
>
| | | | re: Validating CheckBoxes on the ClientSide
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/lib...ng(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.
Patrice wrote: Quote:
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" <mc@community.nospama écrit dans le message de news:
47612ed4$1@mail.hmgcc.gov.uk...
> Quote:
>>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.GetT ype(),
>>"ClientValidateVCB", csValidFunc, true);
>>}
>>
>>protected void cvAgree_ServerValidate(object source,
>>ServerValidateEventArgs args)
>>{
> args.IsValid = (args.Value == bool.TrueString);
>>}
>>
>>Patrice wrote:
>> Quote:
>>>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" <mc@community.nospama écrit dans le message de news:
>>>4761167e$1@mail.hmgcc.gov.uk...
>>>
>>>
>>>>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?
>>>
>>>
>
| | | | re: Validating CheckBoxes on the ClientSide
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/feedbac...spx?SiteID=210
Sincerely,
Steven Cheng
Microsoft MSDN Online Support Lead
This posting is provided "AS IS" with no warranties, and confers no rights.
-------------------- Quote:
>Date: Fri, 14 Dec 2007 09:23:14 +0000
>From: mc <mc@community.nospam>
>Newsgroups: microsoft.public.dotnet.framework.aspnet
>Subject: Re: Validating CheckBoxes on the ClientSide
>
>Thanks for that, this was the solution I stumbled across myself. However I
was hoping that I would Quote:
>be able to work with args.Value, and have clean generic functions is there
not anything I could do Quote:
>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? Quote:
>
>Thanks
>
>
>MC
>
>Steven Cheng[MSFT] wrote: Quote:
>Hi MC,
>>
>As for ASP.NET CheckBox control, it does be a particular one which can
not Quote: Quote:
>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 Quote: Quote:
>which provide an example on how to use custom valiator to validate
checkbox: rights. |  | | | | /bytes/about
We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights.
Get the best answers to your questions from over 226,223 network members.
|