zoukankan      html  css  js  c++  java
  • usercontrol 和 page 的继承

    转载的。。原文 http://hi.baidu.com/479775812/blog/item/4f3a0a5cb037d64afbf2c04e.html

    感觉很有用,所以加进来,以备以后使用。。

    我们以前的项目很多都用了页面继承和用户控件的继承,由于Code-behind模型和编译模型的变化,实现它们的方法也有了一些变化。
    1.动态装载UserControl
    在1.x里,动态装载UserControl是很简单的,
    例如:MyControl myControl = (MyControl)LoadControl("~/MyControl.ascx");
    而在2.0里,却还需要在页面里加上<%@ Reference Control="~/MyControl.ascx" %>
    这里就有了一个问题,如果我要装载的UserControl是不可预知的,那我必需把在页面添加所有的可能的UserControl引用,麻烦。
    再如果我可能在运行时生成UserControl,那么装载这样的UserControl,那就还必需在动态修改页面的引用
    2.UserControl继承
    在1.x里,例如有 UserControl基类
    public class BaseUserControl : System.Web.UI.UserControl{...}
    继承:
    public class DerivedControl :BaseUserControl{...}
    BaseUserControl只需要在一个CS文件定义就可以(BaseUserControl只是一个普通的类)
    在2.0中,则BaseUserControl必需定义在一个UserControl里面,就是BaseUserControl必需是一个完整的UserControl(包括*.ascx和*.ascx.cs或*.ascx.vb)
    假如已经定义一个完整的BaseUserControl
    继承:
    在DerivedControl.ascx.cs中
    public partial class DerivedControl : BaseUserControl{}
    在DerivedControl.ascx中必需添加 <%@ Reference Control="~/BaseUserControl.ascx" %>
    而且它还必需在<%@Control%> 的前面
    <%@ Control Language="C#" AutoEventWireup="true" CodeFileBaseClass="BaseUserControl"
    CodeFile="~/DerivedControl.ascx.cs" Inherits="DerivedControl" %>
    CodeFileBaseClass指定父类类型

    3.Page继承
    与UserControl继承类似,需要从一个完整Page×(包括*.aspx和*.aspx.cs)来继承
    在1.x里,例如有 Page基类
    public class BasePage : System.Web.UI.Page{...}
    在DerivedPage.aspx.cs中
    public partial class DerivedPage : BasePage{}
    在DerivedPage.aspx中必需添加 <%@ Reference Control="~/BasePage.aspx" %>
    它也必需在<%@Page%> 的前面。
    <%@ Control Language="C#" AutoEventWireup="true" CodeFileBaseClass="BasePage"
    CodeFile="~/DerivedPage.ascx.cs" Inherits="DerivedPage" %>

    要指出的是DerivedPage.aspx存根代码(即ASPNet2.0由*.aspx自动生成的那部分)会隐藏BasePage.aspx的存根代码
    (UserControl也一样)例如在BasePage.aspx中定义一个控件如Label1,而在DerivedPage.aspx没有定义它,而 在DerivedPage中加入了操作Label1的代码,在预编译的时候,都是正常的,但在运行时访问DerivedPage.aspx就会报错,指出 对Label1引用没有指定到一个对象的实例。那么我们可以简单地认为,在运行时,ASP.Net只会对所请求的页面的控件进行实例化,当然我们也可以在 后台手工进行控件实例化。当然我们访问BasePage.aspx是不会有错的。

    
  • 相关阅读:
    XML炸弹
    IP分片攻击——就是发送部分分片报文,让对方一直等待从而耗对方内存的DoS攻击
    灰色软件——广告软件,拨号软件,远程访问软件等
    rootkit——一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,一般都和木马、后门等其他恶意程序结合使用
    漏洞利用 Exploit---利用默认口令、IP假冒、应用漏洞
    SequenceFile文件
    随机森林和GBDT的几个核心问题
    机器学习中的算法(1)-决策树模型组合之随机森林与GBDT
    直方图中最大矩形面积
    openMP多线程编程
  • 原文地址:https://www.cnblogs.com/doosmile/p/2052225.html
Copyright © 2011-2022 走看看