首页/技术开发/内容

动态加载用户控件的组件!

技术开发2024-06-04 阅读()
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('/');

}
}




}
}


比如我的一个应用:

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;
}



基于组建的开发,我们可省去叶面上很多重复性的地方。只需在重复叶面的地方引用组件就可以了

比如:



这样我们就可以 以用户组件为元素,组件不同的叶面。叶面也可以重用!




第1页  第2页  第3页  第4页  第5页 

……

相关阅读