在VS2005中开发WebPart的时候,如果没有安装WebPart的模板,那么,可以通过新建一个WEB 控件库来创建。
默认的代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace LinkDB1
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]
public class WebCustomControl1 : WebControl
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["Text"] = value;
}
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write( Text);
}
}
}
生成的DLL文件进行Copy部署,在新建/导入 时,会发现并没有找到该WEB控件,原因是WEB PART必须从WEBPART类继承。
修改成如下的代码即可。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace LinkDB1
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]
public class WebCustomControl1 : System.Web.UI.WebControls.WebParts.WebPart
{
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
}
set
{
ViewState["Text"] = value;
}
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write( Text);
}
}
}
实际上,只是修改了该类的父类而已。
即把:public class WebCustomControl1 : WebControl
修改成:System.Web.UI.WebControls.WebParts.WebPart
所以:开发WebPart只能从System.Web.UI.WebControls.WebParts.WebPart类继承才行。