zoukankan      html  css  js  c++  java
  • 让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
    }


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

    2021年9月 北京、西安两地,高薪诚聘 .NET工程师,请私信联系!
    如果认为此文对您有帮助,别忘了支持一下哦!
    声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。转载时请在文章页面明显位置给出原文链接。
  • 相关阅读:
    Java Scanner
    Java 继承
    什么叫异常?什么叫错误? 如何捕获异常? 如何抛出异常? 说说finally和final的区别! 什么是JDK?什么是JRE?说说它们之间的区别? 说说字符常量和字符串常量的区别
    数据分析三剑客之Pandas时间序列
    Css样式布局之Flex弹性盒子布局
    memcached的安装和使用
    Flask 第十八话之Restful API
    Flask 第十七话之信号
    Flask 第十六话之钩子函数
    Flask 第十五话之请求上下文及全局全局存储g对象
  • 原文地址:https://www.cnblogs.com/youring2/p/2419443.html
Copyright © 2011-2022 走看看