关于验证控件的问题

netspies 2008-09-01 10:58:13
我的问题是: 在页面中有几个控件,想对输入进行验证,包括:网站地址,邮箱地址,电话号码等.

我的要求是 : 如果用户在这几个框中输入了内容,例如输入了邮箱地址,则对该内容进行验证,如果用户没有输入,
则不进行验证,就是允许用户不输入.

请大家赐教.
...全文
109 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
nicesky1 2008-09-01
  • 打赏
  • 举报
回复
最简单的方法,拖一个服务器的验证控件,如正则表达式控件,设置正则达式控件的验证表达式,
再设置绑定的控件ID就行了
netspies 2008-09-01
  • 打赏
  • 举报
回复
请大家说详细点, 我不会用这个东西. 最好比较完整的例子.
yanxiaodi 2008-09-01
  • 打赏
  • 举报
回复
验证控件一般有个属性,目的控件为空的时候是否验证 仔细找找 我忘了怎么拼了
lihongdian 2008-09-01
  • 打赏
  • 举报
回复
if(用户没输入)
验证控件无效
else
验证控件有效

验证控件有个属性,设置成false就可以了.
行者无疆-Kevin 2008-09-01
  • 打赏
  • 举报
回复
可以学学,也可以扩展.
行者无疆-Kevin 2008-09-01
  • 打赏
  • 举报
回复
namespace CLibrary
{ #region 枚举数据
/// <summary>
/// 验证数据类型
/// </summary>
public enum CDataType
{
Never, //不验证
String, //字符串
Int, //整数
IntPostive, //大于0的整数
IntZeroPostive, //大于等于0的整数
Custom
}
#endregion

/// Attribute DefaultProperty指定组件的默认属性,ToolboxData指定当从IDE工具中的工具箱中拖动自定义控件时为它生成的默认标记
[DefaultProperty("AllowEmpty"), ToolboxData("<{0}:CTextBox runat=server></{0}:CTextBox>")]
//类CTextBox派生自TextBox
public class CTextBox : System.Web.UI.WebControls.TextBox
{
#region 子控件
//private System.Web.UI.WebControls.TextBox txtDataInput = new TextBox();
private System.Web.UI.WebControls.RequiredFieldValidator rfvDataInput = new RequiredFieldValidator();
private System.Web.UI.WebControls.RegularExpressionValidator revDataInput = new RegularExpressionValidator();
private Panel pnlFrame = new Panel(); //承载其它控件的容器Panel控件
#endregion

private string error = "";

#region 控件自定义属性

[Bindable(true)]
[Category("自定义信息区")]
[Browsable(true)]
[Description("是否允许空值")]
[DefaultValue("true")]
public bool AllowEmpty
{
get { return ViewState["AllowEmpty"] == null ? true : (bool)ViewState["AllowEmpty"]; }
set {
ViewState["AllowEmpty"] = value;
//样式设定
if (this.AllowEmpty)
{
this.BackColor = System.Drawing.Color.LightBlue;
}
else
{
this.BackColor = System.Drawing.Color.White;
}
}
}
[Bindable(true)]
[Category("自定义信息区")]
[Browsable(true)]
[Description("验证数据类型,默认为不验证")]
[DefaultValue("IntPostive")]
public CDataType ValidType
{
get { return ViewState["ValidType"] == null ? CDataType.Never : (CDataType)ViewState["ValidType"]; }
set { ViewState["ValidType"] = value; }
}
[Bindable(true)]
[Browsable(true)]
[Category("自定义信息区")]
[Description("自定义验证错误信息")]
[DefaultValue("")]
public string ValidError
{
get { return ViewState["ValidError"] == null ? "" : (string)ViewState["ValidError"]; }
set { ViewState["ValidError"] = value; }
}
[Bindable(true)]
[Browsable(true)]
[Category("自定义信息区")]
[Description("自定义用于验证的正则表达式,ValidType 为 Custom 时有效")]
[DefaultValue("")]
public string ValidExpressionCustom
{
get { return ViewState["ValidExpressionCustom"] == null ? "" : (string)ViewState["ValidExpressionCustom"]; }
set { ViewState["ValidExpressionCustom"] = value; }
}
[Bindable(true)]
[Browsable(true)]
[Category("自定义信息区")]
[Description("错误信息提示的CSS类名")]
[DefaultValue("")]
public string CssError
{
get { return ViewState["CssError"] == null ? "" : (string)ViewState["CssError"]; }
set { ViewState["CssError"] = value; }
}
/// <summary>
/// 重写ReadOnly属性,设定样式
/// </summary>
public override bool Enabled
{
set
{
base.Enabled = value;
if (base.Enabled)
{
base.BackColor = System.Drawing.Color.White;
}
else
{
base.BackColor = System.Drawing.Color.LightGray;
}
}
}

#endregion

#region 构造函数
public CTextBox() { }
#endregion

#region EnsureChildControls
protected override void EnsureChildControls()
{
this.rfvDataInput.CssClass = this.CssError;
this.rfvDataInput.ErrorMessage = this.ValidErrorEmpty;
//this.rfvDataInput.ErrorMessage = "*输入不能为空";
this.rfvDataInput.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic;
this.rfvDataInput.EnableViewState = true;
this.rfvDataInput.ControlToValidate = base.ID;
this.revDataInput.CssClass = this.CssError;
this.revDataInput.ErrorMessage = "*输入格式错误";
//this.revDataInput.ErrorMessage = ValidErrorEmpty;
this.revDataInput.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic;
this.revDataInput.EnableViewState = true;
this.revDataInput.ControlToValidate = base.ID;
//将子控件添加到此自定义控件中
this.Controls.Add(rfvDataInput);
this.Controls.Add(revDataInput);
this.Controls.Add(pnlFrame);
}
#endregion

#region GetRegex
/// <summary>
/// 根据设置的验证数据类型返回不同的正则表达式样
/// </summary>
/// <returns></returns>
private string GetValidRegex()
{
string regex = @"(\S)";
switch (this.ValidType)
{
case CDataType.Never:
break;
case CDataType.Int:
error = "*必须为整数";
regex = @"(-)?(\d+)";
break;
case CDataType.IntPostive:
error = "*必须为大于0的整数";
regex = @"([1-9]{1}\d*)";
break;
case CDataType.IntZeroPostive:
error = "*必须为不小于0的整数";
regex = @"(\d+)";
break;
case CDataType.Float:
error = "*必须为数字";
regex = @"(-)?(\d+)(((\.)(\d)+))?";
break;
case CDataType.FloatPostive:
error = "*必须为大于0的数字";
regex = @"(\d+)(((\.)(\d)+))?";
break;
case CDataType.Custom:
error = "*格式错误";
regex = this.ValidExpressionCustom;
break;
default:
break;
}
if (this.ValidError.Trim() != "")
error = this.ValidError;
return regex;
}
#endregion

#region 将此控件呈现给指定的输出参数
/// <summary>
/// 将此控件呈现给指定的输出参数。
/// </summary>
/// <param name="output"> 要写出到的 HTML 编写器 </param>
protected override void Render(HtmlTextWriter output)
{
base.Render(output);
output.Write(" ");
if (!this.AllowEmpty)
{
this.rfvDataInput.ID = "rfv" + base.ID;
this.rfvDataInput.ControlToValidate = base.ID;
// add zhang
this.rfvDataInput.ErrorMessage = this.ValidErrorEmpty;
//--
this.rfvDataInput.RenderControl(output);
}
if (this.ValidType != CDataType.Never && this.ValidType != CDataType.String)
{
this.revDataInput.ID = "rev" + base.ID;
this.revDataInput.ControlToValidate = base.ID;
this.revDataInput.ValidationExpression = this.GetValidRegex();
this.revDataInput.ErrorMessage = error;
this.revDataInput.RenderControl(output);
}
}
#endregion

}
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧