一个简单的 Web 部件可以是任意类型的 ASP.NET 控件,包括用户控件、内置的或者自定义的服务器控件,且 ASP.NET 控件直接从一个新的命名空间 System.Web.UI.WebControls.WebParts 中的 WebPart 基类派生。
上一篇博文中的示例,可以看到 Web 部件都自动获取默认的标题及可以最小化和恢复该 Web 部件的默认菜单。那么,如何定制自定义的 Web 部件中的这些文本并且添加菜单项?
任何 Web 部件都能提供自定义公共属性来让用户通过编辑器 Web 部件进行修改,而 Web 部件编辑器可以被添加到叫做 EditZone 的 Web 部件。当页面切换到 Edit 模式时,这个 EditZone 可以显示出来。
创建简单的 Web 部件
基本而言,ASP.NET Web 部件将用户控件包装到 GenericWebPart 的一个实例中。这个 GenericWebPart 类确保你的用户控件获得框架及最小化、恢复和关闭 Web 部件的动词菜单。对于其他所有的服务器控件都一样,只要不是从 System.Web.UI.WebControls.WebParts.WebPart 继承来的 ASP.NET 控件,都将被包装成 GenericWebPart 类的一个实例。
还是以此例为示例:
想要访问作为 Web 部件添加到页面的控件的属性和事件,可以像往常一样做。下面显示了第一次请求页面时,设置 Calendar 控件的 SelectedDate 属性的示例代码:
object sender, EventArgs e)
{
if (!IsPostBack)
{
// This is a strange workaround for the calendar,
// but it's the only way it works whether the
// calendar is in a Web Part zone or not.
Calendar helper = new Calendar();
helper.SelectedDate = DateTime.Now.AddDays(30);
helper.VisibleDate = DateTime.Now.AddDays(30);
MyCalendar.SelectedDate = helper.SelectedDate;
MyCalendar.VisibleDate = helper.VisibleDate;
}
}