让UserControl可以被验证

在web开发中,我们通常会将重复使用的代码分装成UserControl,方便之后reuse,例如DateTime控件、HtmlEditor等。

MS为asp.net 提供了一种简单的验证机制。本文要说的重点就是讲这种验证用在用户控件中。

 

要让用户控件可以被验证,只需要为控件的类添加一个特性:[ValidationProperty("SelectID")],例如:

复制代码
    [ValidationProperty("SelectID")]
public partial class TextBoxAutoComplete : System.Web.UI.UserControl
{
#region 属性

/// <summary>
/// 从AutoComplete中选择的ID
/// </summary>
public string SelectID
{
get
{
return this.AutoComplete_Hidden.Value;
}
set
{
this.AutoComplete_Hidden.Value = value;
}
}

#endregion

#region 页面加载

protected void Page_Load(object sender, EventArgs e)
{

}

#endregion
}
复制代码


这样虽然可以验证,但是,你会发现每次都会回发到服务器端进行验证,使用Page.IsValid,很不方便!貌似是因为不支持Client Script的验证,那么怎样才可以在客户端完成验证呢?

答案便是需要在客户端注册一个隐藏域,ID与控件的ClientID相同,同时需要在客户端更新后用脚本更新这个字段的值。

复制代码
    [ValidationProperty("SelectID")]
public partial class TextBoxAutoComplete : System.Web.UI.UserControl
{
#region 属性

/// <summary>
/// 从AutoComplete中选择的ID
/// </summary>
public string SelectID
{
get
{
return this.AutoComplete_Hidden.Value;
}
set
{
this.AutoComplete_Hidden.Value = value;
}
}

#endregion

#region 页面加载

protected void Page_Load(object sender, EventArgs e)
{
Page.ClientScript.RegisterHiddenField(this.ClientID, this.SelectID);  //注意此句代码,同时需要向客户端添加事件,此处略过
}

#endregion
}
复制代码


以上的内容便可以完成客户端验证了。

本文作者:拓荒者IT

本文链接:https://www.cnblogs.com/youring2/archive/2012/03/27/2419443.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

 

📌做了个微信公众号【拓荒者IT】,分享各种技术干货,新内容首发到公众号,欢迎关注❤️

posted @   拓荒者IT  阅读(378)  评论(0编辑  收藏  举报
皮肤配置 参考地址:https://www.yuque.com/awescnb/user
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起