我看到了为sharepoint创建Web部件的两种不同方式。大多数人最喜欢哪一个?
http://msdn.microsoft.com/en-us/library/aa973249%28office.12%29.aspx
答案 0 :(得分:1)
任何涉及VSeWSS的事情都会痛苦地结束,所以方法1肯定会出局。方法2也不理想,因为设置html元素作为控件变得难以管理,只是超出了你在该演示中看到的水平。我使用一个相当简单的通用基类,它将用户控件作为类型参数,并允许我将所有布局与sharepoint基础结构完美地分开。如果您以编程方式创建页面/ Web部件,则大多数Web部件xml也是可选的。
public abstract class UserControlWebPart<T> : Microsoft.SharePoint.WebPartPages.WebPart where T:UserControl
{
protected UserControlWebPart()
{
this.ExportMode = WebPartExportMode.All;
}
protected virtual void TransferProperties(T ctrl)
{
var tc = typeof(T);
var tt = this.GetType();
foreach (var p in tt.GetProperties()) {
if (p.IsDefined(typeof(ControlPropertyAttribute), true)) {
foreach (var p2 in tc.GetProperties()) {
if (p2.Name == p.Name) {
p2.SetValue(ctrl, p.GetValue(this, null), null);
}
}
}
}
}
protected override void CreateChildControls()
{
string controlURL = ControlFolder+typeof(T).Name+".ascx";
var ctrl = Page.LoadControl(controlURL) as T;
TransferProperties(ctrl);
this.Controls.Add(ctrl);
}
protected virtual string ControlFolder
{
get {
return "~/_layouts/UserControlWebParts/";
}
}
}
答案 1 :(得分:0)
对于我编写的少数网页部分,我想我的方法#2比方法#1更多。看起来更直接,并且有可能在SharePoint环境之外重用(取决于业务逻辑的深度)。