***在web.config中进行注册用户控件
<system.web>
<pages>
<controls>
<add tagprefix="user" tagname="random" src=""、》
<controls>
</pages>
<system.web>
<pages>
<controls>
<add tagprefix="user" tagname="random" src=""、》
<controls>
</pages>
<system.web>
注意:采用此种方式注册,用户控件和使用控件的页面不要在一个文件夹。
***可以使用public属性,暴露用户控件的属性。
***暴露用户控件的事件
需要把信息传递给包含此控件的页面的时候。
public event EventHandler TabClick;
/// <summary>
/// This method executes when a user clicks a tab
/// </summary>
protected void dlstTabStrip_SelectedIndexChanged(object sender, EventArgs e)
{
if (TabClick != null)
TabClick(this, EventArgs.Empty);
}
/// <summary>
/// This method executes when a user clicks a tab
/// </summary>
protected void dlstTabStrip_SelectedIndexChanged(object sender, EventArgs e)
{
if (TabClick != null)
TabClick(this, EventArgs.Empty);
}
***
<fieldset>
<legend>
可以实现groupbox的效果。
***Ajax和用户控件
IE xmlhttp activex组件。
其他:xmlhttprequest
实现ajax的步骤:
1.创建一个客户端脚本来实现ajax调用。可以使用 Page.ClientScript.GetCallbackEventReference()来访问这个脚本,然后在页面中使用 Page.ClientScript.RegisterStartupScript()方法在页面中进行注册。
2.创建服务器端方法RaiseCallBackEvent()和GetCallBackResult(),它们用来从服务器端返回字符串。
3.创建客户端方法RaiseCallbackEvent()接受服务器端返回值并进行处理。
1.注意控件必须实现System.Web.UI.ICallbackEventHandler 接口。
<%@ Implements Interface="System.Web.UI.ICallbackEventHandler" %>
*** 动态加载用户控件,经常与PlaceHolder一起应用。
const string randomFolder = "~/FeaturedProducts";
protected void Page_Load(object sender, EventArgs e)
{
string featuredProductPath = GetRandomProductPath();
Control featuredProduct = Page.LoadControl(featuredProductPath);
PlaceHolder1.Controls.Add(featuredProduct);
}
private string GetRandomProductPath()
{
Random rnd = new Random();
string[] files = Directory.GetFiles(MapPath(randomFolder), "*.ascx");
string featuredProductPath = Path.GetFileName(files[rnd.Next(files.Length)]);
return Path.Combine(randomFolder, featuredProductPath);
}
protected void Page_Load(object sender, EventArgs e)
{
string featuredProductPath = GetRandomProductPath();
Control featuredProduct = Page.LoadControl(featuredProductPath);
PlaceHolder1.Controls.Add(featuredProduct);
}
private string GetRandomProductPath()
{
Random rnd = new Random();
string[] files = Directory.GetFiles(MapPath(randomFolder), "*.ascx");
string featuredProductPath = Path.GetFileName(files[rnd.Next(files.Length)]);
return Path.Combine(randomFolder, featuredProductPath);
}
***创建多页面向导
可以使用动态加载不同的用户控件来实现。