zoukankan      html  css  js  c++  java
  • asp.net 控件开发学习笔记(1)

    这周末学习了 整理了控件开发的知识,顺便系统的整理下。

    asp.net 中控件开发分为 用户控件开发和自定义控件开发。

    1.用户控件

    用户控件的后缀名为.ascx,用户控件是不能被用户直接访问的,只能嵌入到aspx页面中(设计模式下直接拖入)

    <%@ Register TagPrefix="Sample" TagName="Login" Src="~/mycontrol.ascx" %>  //声明控件引用

    在这段代码中,有几个属性是必须编写的,这些属性的功能如下所示:
    TagPrefix:定义控件位置的命名控件。有了命名空间的制约,就可以在同一个页面中使用不同功能的同名控件。
    TagName:指向所用的控件的名字。
    Src:用户控件的文件路径,可以为相对路径或绝对路径,但不能使用物理路径。

    例1:博客园后台管理的顶部导航就可以通过一个用户控件来实现。

     新建WebUserControl.ascx,cs代码如下:

    代码
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;

    public partial class Inc_WebUserControl : System.Web.UI.UserControl
    {

        
    private String type = "";//通过类型判断导航样式

        
    public String _type
        {
            
    get { return type; }
            
    set { type = value; }
        }

        
    protected void Page_Load(object sender, EventArgs e)
        {
                     
                    Response.Write(_type);
         
           
        }
    }

    text_control.aspx页面html如下:

    代码
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="text_control.aspx.cs" Inherits="text_control" %>



    <%@ Register src="Inc/WebUserControl.ascx" tagname="WebUserControl" tagprefix="uc1" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        
    <title>无标题页</title>
    </head>
    <body>
        
        
    <form id="form1" runat="server">
        
    <div>
          
        
    </div>

        
    <uc1:WebUserControl ID="WebUserControl1" runat="server" _type="随笔"/>

        
    </form>
    </body>
    </html>

    在不同页面拖入该控件后,设置不同的_type值,从而控制.ascx生成的html。

    这里需要注意的是 页面Page_Load的执行顺序.

    (1)文件包含 模板页,内容,用户控件

           先执行内容页Page_Load,再执行模板页 Page_Load,最后执行用户控件Page_Load

          当有多个不同的用户控件时候,内容页中靠前的用户控件Page_Load先执行。

     (2)文件为 只有 内容,用户控件

          先执行内容页Page_Load,再执行用户控件的Page_Load。

     2.自定义控件

        自定义控件与用户控件不同,自定义控件需要定义一个直接或间接从Control类派生的类,并重写Render方法。在.NET框架中,System.Web.UI.ControlSystem.Web.UI.WebControls.WebControl两个类是服务器控件的基类,并且定义了所有服务器控件共有的属性、方法和事件,其中最为重要的就是包括了控制控件执行生命周期的方法和事件,以及ID等共有属性。

        自定义控件又可以分为以下三种:

        (1).复合控件   将现有的各种控件组合起来,形成一个新的控件,来满足用户的需求
        (2).扩展控件   就是在现有的控件基础上,派生出一个新的控件,增加新的功能,或者修改原有功能,来满足用户需求
        (3).自定义控件  就是直接从System.Windows.Forms.Control类派生,也就是说完全由自己来设计、实现一个全新的控件,这是最灵活、最强大的方法,但是,对开发者的要求也是最高的。要实现一个自定义控件,必须为Control类的的OnPaint事件编写代码,在OnPaint事件中实现自定义控件的绘制工作。同时,还可以重写Control类的WndProc方法,来处理底层的Windows消息。所以说,要实现一个自定义控件,对开发者的要求较高,要求开发者必须了解GDI+和Windows API的知识。

     3.用户控件和自定义控件的异同

       对比用户控件和自定义控件,很多人或认为用户控件更加容易开发,而自定义控件的门槛较高,不方便应用程序的开发。其实不然,用户控件更适合创建内部的应用程序特定的控件,例如用户登录控件会在该项目中经常使用,所以创建用户控件能够极快的提高应用程序开发。而自定义控件通常应用到更适合创建通用的可再分发的控件,例如常用的开源HTML编辑器Fckeditor就可以说是一个优秀的自定义控件。

    通常用户控件在一个项目中经常使用,而自定义控件用来在通用的程序中使用,当网站应用程序开发中,导航控件如果用用户控件实现,是非常方便的。但是通过自定义控件实现,可能并不能适合所有的应用场合,当需要适应其他场合时,可能需要重新开发和编译。具体的讲,用户控件和自定义控件可以从以下几个方面来说明它们的区别:

    (1).使用率

    在选择使用用户控件和自定义控件时,可以首先考虑使用率。如果开发的应用程序只是需要小范围的使用,则可以考虑用户控件,而如果开发的自定义控件能够在大部分的应用程序中被应用,则可以考虑自定义控件。

    (2).创建技术

    用户控件和自定义控件的创建技术是不相同的,并且用户控件和自定义控件创建的难度也不相同,用户控件是以.ascx形式声明并创建的,开发过程也比较简单,并且有设计器提供设计支持,而自定义控件是从System.Web.UI.Control派生而来的,开发过程稍微复杂,也没有设计器提供设计支持。

    (3).生成方式

    用户控件和自定义控件生成的方式不同,用户控件是以.ascx的形式呈现,而自定义控件是以DLL的形式呈现,通过添加引用,自定义控件能够在【工具箱】中显式,能够像服务器控件一样拖动到页面,并且能够通过编程开发增加自定义属性。而用户控件无法在工具箱显示,也不能够像自定义控件那样增加自定义属性。

    (4).性能

    虽然用户控件和自定义控件编写的过程不同,也遵循不同的创建模型,但是用户控件和自定义控件都是从System.Web.UI.Control直接或间接的派生的,在性能上没有很大的差别,主要是因为当用户控件在页面中第一次使用时,将作为普通的服务器控件被解析并编译进配件,第二次使用时,就和其他编译型控件一样。   

      

    参考:1. 学习文档

            2. 测试代码

  • 相关阅读:
    通过Powershell开启RDP
    映射网络驱动器
    简易图书管理系统
    使用IDEA快速创建Spring Boot项目
    oracle11g安装步骤详细图文教程
    使用JDOM创建XML文档
    使用JDOM解析XML文档
    HTML+CSS之金立官网部分实现
    webstorm2019安装与使用详细教程
    第二章 JavaScript基础指令
  • 原文地址:https://www.cnblogs.com/dooom/p/1800278.html
Copyright © 2011-2022 走看看