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工程师,请私信联系!
    如果认为此文对您有帮助,别忘了支持一下哦!
    声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。转载时请在文章页面明显位置给出原文链接。
  • 相关阅读:
    Ubuntu 16 安装redis客户端
    crontab 参数详解
    PHP模拟登录发送闪存
    Nginx配置端口访问的网站
    Linux 增加对外开放的端口
    Linux 实用指令之查看端口开启情况
    无敌的极路由
    不同的域名可以指向同一个项目
    MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error
    Redis 创建多个端口
  • 原文地址:https://www.cnblogs.com/youring2/p/2419443.html
Copyright © 2011-2022 走看看