e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
128 lines
5.4 KiB
C#
128 lines
5.4 KiB
C#
//------------------------------------------------------------------------------
|
|
// <copyright file="CustomValidator.cs" company="Microsoft">
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// </copyright>
|
|
//------------------------------------------------------------------------------
|
|
|
|
using System.ComponentModel;
|
|
using System.Diagnostics;
|
|
using System.Web.UI.WebControls;
|
|
using WebCntrls = System.Web.UI.WebControls;
|
|
using System.Security.Permissions;
|
|
|
|
namespace System.Web.UI.MobileControls
|
|
{
|
|
/*
|
|
* Mobile CustomValidator class.
|
|
* The CustomValidator provides the ability to easily write custom server
|
|
* validation logic. A user-defined function is called via a single-cast
|
|
* delegate to provide server-side custom validation.
|
|
*
|
|
* Copyright (c) 2000 Microsoft Corporation
|
|
*/
|
|
/// <include file='doc\CustomValidator.uex' path='docs/doc[@for="CustomValidator"]/*' />
|
|
[
|
|
DefaultEvent("ServerValidate"),
|
|
ToolboxData("<{0}:CustomValidator runat=\"server\" ErrorMessage=\"CustomValidator\"></{0}:CustomValidator>"),
|
|
ToolboxItem("System.Web.UI.Design.WebControlToolboxItem, " + AssemblyRef.SystemDesign)
|
|
]
|
|
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
|
|
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
|
|
[Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")]
|
|
public class CustomValidator : BaseValidator
|
|
{
|
|
private WebCntrls.CustomValidator _webCustomValidator;
|
|
|
|
// Static objects to identify individual events stored in Events
|
|
// property.
|
|
private static readonly Object EventServerValidate = new Object();
|
|
|
|
/// <include file='doc\CustomValidator.uex' path='docs/doc[@for="CustomValidator.CreateWebValidator"]/*' />
|
|
protected override WebCntrls.BaseValidator CreateWebValidator()
|
|
{
|
|
_webCustomValidator = new WebCntrls.CustomValidator();
|
|
|
|
// Adding wrapper event handlers for event properties exposed by
|
|
// the aggregated control. For more details about the mechanism,
|
|
// please see the comment in the constructor of
|
|
// Mobile.UI.AdRotator.
|
|
ServerValidateEventHandler eventHandler =
|
|
new ServerValidateEventHandler(WebServerValidate);
|
|
|
|
_webCustomValidator.ServerValidate += eventHandler;
|
|
|
|
return _webCustomValidator;
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// Mimic the properties exposed in the original CustomValidator.
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
/// <include file='doc\CustomValidator.uex' path='docs/doc[@for="CustomValidator.ServerValidate"]/*' />
|
|
[
|
|
Bindable(false),
|
|
DefaultValue(null),
|
|
MobileSysDescription(SR.CustomValidator_OnServerValidate)
|
|
]
|
|
public event ServerValidateEventHandler ServerValidate
|
|
{
|
|
add
|
|
{
|
|
Events.AddHandler(EventServerValidate, value);
|
|
}
|
|
remove
|
|
{
|
|
Events.RemoveHandler(EventServerValidate, value);
|
|
}
|
|
}
|
|
|
|
// protected method (which can be overridden by subclasses) for
|
|
// raising user events
|
|
/// <include file='doc\CustomValidator.uex' path='docs/doc[@for="CustomValidator.OnServerValidate"]/*' />
|
|
protected virtual bool OnServerValidate(String value)
|
|
{
|
|
ServerValidateEventHandler handler = (ServerValidateEventHandler)Events[EventServerValidate];
|
|
if (handler != null)
|
|
{
|
|
ServerValidateEventArgs args = new ServerValidateEventArgs(value, true);
|
|
handler(this, args);
|
|
return args.IsValid;
|
|
}
|
|
else
|
|
{
|
|
return true;
|
|
}
|
|
}
|
|
|
|
private void WebServerValidate(Object source, ServerValidateEventArgs e)
|
|
{
|
|
// Invoke user events for further manipulation specified by user
|
|
Debug.Assert(e != null, "Unexpected null parameter!");
|
|
e.IsValid = OnServerValidate(e.Value);
|
|
}
|
|
|
|
/// <include file='doc\CustomValidator.uex' path='docs/doc[@for="CustomValidator.EvaluateIsValid"]/*' />
|
|
protected override bool EvaluateIsValid()
|
|
{
|
|
return EvaluateIsValidInternal();
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
// Helper function adopted from WebForms CustomValidator
|
|
/////////////////////////////////////////////////////////////////////
|
|
|
|
/// <include file='doc\CustomValidator.uex' path='docs/doc[@for="CustomValidator.ControlPropertiesValid"]/*' />
|
|
protected override bool ControlPropertiesValid()
|
|
{
|
|
// Need to override the BaseValidator implementation, because for
|
|
// CustomValidator, it is fine for ControlToValidate to be blank.
|
|
String controlToValidate = ControlToValidate;
|
|
if (controlToValidate.Length > 0)
|
|
{
|
|
return base.ControlPropertiesValid();
|
|
}
|
|
return true;
|
|
}
|
|
}
|
|
}
|