国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
動態(tài)加載用戶控件的組件!(一)

我們寫用戶控件的目的就是放到頁面中去。根據(jù)不同的條件,我們可以改變加載的用戶控件!

其實原理就是MasterPage的原理。這個MasterPage會在vs2005中提供,但是現(xiàn)在也可以實現(xiàn)。

在我的項目中就用到:

MasterPage就四個類,其中容器就動態(tài)加載用戶控件。這種功能在vs2005中將無處不在。

下面簡單介紹一下動態(tài)加載葉面組件:

我們只需要改變用戶組件的地址就可以動態(tài)改變加載的用戶組件了。

在程序中動態(tài)改變SkinPath就可以了。

組件源碼如下:

using System;
//using System.Drawing;
using System.Collections;
using System.Collections.Specialized;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.IO;
using System.Web.Security;
using Region.Components;

namespace Region.Controls {

    [ParseChildren(true)]
    /// <summary>
    /// 頁面組件,從用戶組件獲取
    /// </summary>
    public abstract class SkinnedControl : WebControl, INamingContainer {

        string skinFilename = null;
        string skinName = null;
  string skinPath;

       // string returnURL = null;
      
        /// <summary>
        /// 添加子組件
        /// </summary>
        protected override void CreateChildControls() {
   if(SkinPath == null || SkinPath == "" || SkinPath.Trim() == "")
    return ;
            Control skin;         
            skin = LoadSkin();          
            InitializeSkin(skin);
            Controls.Add(skin);
        }

        /// <summary>
        /// 獲取摸板組件
        /// </summary>
        /// <returns>組件</returns>
  protected Control LoadSkin()
  {
   Control skin;
   try
   {
    skin = Page.LoadControl(SkinPath);
   }
   catch (FileNotFoundException)
   {
    throw new Exception("找不到文件:[ " + SkinPath + " ] .");
   }
   return skin;
  }

        /// <summary>
        /// 初始化組建摸板
        /// </summary>
        /// <param name="skin">組件</param>
        protected abstract void InitializeSkin(Control skin);


        /// <summary>
        /// 用戶組件名稱
        /// </summary>
  public string SkinFilename
  {
   get
   {
    return skinFilename;
   }
   set
   {
    skinFilename = value;
   }
  }

        /// <summary>
        /// 組件名稱
        /// </summary>
  protected string SkinName
  {
   get
   {
    return skinName;
   }
   set
   {
    skinName = value;
   }
  }

  /// <summary>
  /// 用戶組件相對路徑及組件名稱
  /// </summary>
  public string SkinPath
  {
   get
   {
    return skinPath;
   }
   set
   {
    skinPath = value;
    SkinFilename = value.TrimStart(‘/‘);
       
   }
  }

 

   
    }
}

比如我的一個應(yīng)用:

switch (context.PageId)
   {
    case "1_1" :
     base.SkinPath = "~/Themes/SignManager/TermList.ascx";
     break ; 
    case "1_1_1" :
     base.SkinPath = "~/Themes/SignManager/TermEdit.ascx";
     break ; 
    case "1_2" :
     base.SkinPath = "~/Themes/SignManager/MemberList.ascx";
     break ; 
    
    case "1_2_1" :
     base.SkinPath = "~/Themes/SignManager/MemberEdit.ascx";
     break ; 
    case "2_1" :
     base.SkinPath = "~/Themes/SignManager/CardSend.ascx";
     break ; 
    case "3_1" :
     base.SkinPath = "~/Themes/SignManager/MemberNoEdit.ascx";
     break ; 
    case "4_1" :
     base.SkinPath = "~/Themes/AcountEdit.ascx";
     break ;
    default :
     base.SkinPath = "";
     break;
   }

 

基于組建的開發(fā),我們可省去葉面上很多重復(fù)性的地方。只需在重復(fù)葉面的地方引用組件就可以了

比如:

這樣我們就可以 以用戶組件為元素,組件不同的葉面。葉面也可以重用!

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
淺析C# COM組件的ASP調(diào)用方法 - 51CTO.COM
Castle IOC容器快速入門 - TerryLee‘s Tech Space - 博客...
系統(tǒng)架構(gòu)技能之設(shè)計模式—組合模式
C#設(shè)計模式(5)——建造者模式(Builder Pattern)
【轉(zhuǎn)載】Bootstrap Blazor 組件介紹 Table (一)自動生成列功能介紹
Wix 安裝部署教程(十一)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服