• 控件开发读书笔记


    默认有一个类Class1,但头部没有对WebControls的引用,要加上using System.Web.UI.WebControls;
    把默认Class1继承自WebControl
    这样就可以写出如下代码:
    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
      writer.WriteLine("Hello World");
    }
    编译生成
    切换到Web 应用程序,添加引用,项目,选择前面刚才的项目
    这里,我一直没办法让它出现在工具箱中(但有时又会,原因不知道。如果我们加的是ASP.NET 服务器控件,WebCustomControl,就会自动多出一个栏及一个图标)

    对默认的Default.aspx进行编辑
    先要在头部输入如下代码:
    <%@ Register Assembly="ClassLibrary1" Namespace="ClassLibrary1" TagPrefix="cc1" %>
    然后在HTML中输入<cc1:即可智能提示相应内容
    完整输入的内容为:<cc1:Class1 ID="Class11" runat="server" />
    知识点:
    <%@ Register Assembly="ClassLibrary1" Namespace="ClassLibrary1" TagPrefix="cc1" %>的含义:
    注册用户控件,建立别名。
    TagPrefix为命名空间的别名,如果改为其它内容,要等一下HTML中才能反映出来,并且不能为空,不能没有这一项。
    Namespace为命名空间
    Assembly为程序集,即编译后的DLL文件名
    下次看到时,就不要不知道了。
    <%@ Register %>只对当前页有效,如果对整个项目有效,则在web.config的system.web中注册
        <pages>
          <controls>
            <add assembly="ClassLibrary1" namespace="ClassLibrary1" tagPrefix="cc2" />
          </controls>
        </pages>
    如果页面也注册不同的别名,则该页面两个别名都可以用,如下:
        <cc1:Class1 ID="Class11" runat="server" />
        <cc2:Class1 ID="Class12" runat="server" />
    不过别名的提示没有那么灵敏好像。都要等一会才会出来。

    Page间接继承自Control类,Control的RenderControl()方法默认逻辑为判断Control.Visible属性,为True,则调用Render()方法,而Render()方法除了生成自己的内容外,还调用RenderChildren()方法触发所有子控件,子控件又RenderControl()->Render()->RenderChildren()
    我在Default.aspx中上加一个这样控件:
    <cc1:Class1 ID="Class11" runat="server" Visible="false" />
    运行结果真的是没出来了
    然后再把控件override的内容由Render改为RenderControl,结果真的Visible="false"就不起效果了。

  • 相关阅读:
    javaweb大文件上传
    java+大文件分段上传
    php文件断点上传
    java+断点续传
    .net断点续传
    PHP检测每一段代码执行时间
    javaScript阻止浏览器F5刷新
    PHP动态修改配置文件
    eval()计算某个字符串,js和jquery都可以使用
    php 访问java接口数据
  • 原文地址:https://www.cnblogs.com/yzx99/p/1369774.html
Copyright © 2020-2023  润新知