Sharepoint Webpart 继承

Posted

技术标签:

【中文标题】Sharepoint Webpart 继承【英文标题】:Sharepoint Webpart inheritance 【发布时间】:2013-08-29 20:38:04 【问题描述】:

我想为我的网站创建一堆 Webpart, 所有 webpart 周围都有一个共同的特殊边框。 所以他们的 .ascx 看起来像:

<div class="my_special_border">
    <div class="web_part_content">
        bla bla
    </div >
</div>

我想避免每个 webpart 中的边框重复(主要是因为它不是一个“div”,而是一个更复杂的布局)。

我在考虑webpart继承, base 将提供边框,每个继承者将提供自己的内容。

所以我有一个“BaseWebpart”,我在其中放置了我的特殊边框。 如何使派生 WebPart 的内容进入基本边框? 我需要它易于使用,因此其他开发人员可以通过仅从我的 Base 继承来添加自己的 webpart。 所以基本上,我不想要 DerivedWebpart 中的任何特殊代码(除了继承)

我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

我认为您必须在 basewebpart 后面的代码中执行此操作。在 basewebpart 中重写 Render 方法。在 base.Render 之前,写下 2 个 div 的开始标签。在 base.render 之后写结束标签。

然后让您的所有 Web 部件都从 BaseWebPart 继承。

免责声明:我自己没有尝试过,所以我只是在这里吐口水。但我认为这会奏效。

【讨论】:

我试过了,效果很好。我无法使用 htmlTextWriter WriteBeginTag / WriteEndTag 因为调用 base.Render() 搞砸了 DOM。所以我用简单的字符串代替 etc.【参考方案2】:

我会尝试使用不同 Web 部件使用的通用资源文件。在后面的代码中,根据需要将资源文件的内容添加到渲染内容的顶部/底部。

【讨论】:

以上是关于Sharepoint Webpart 继承的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SharePoint 2013 中创建自定义优化面板

SharePoint 2013 WebPart 管理工具分享[开源]

Sharepoint:WebPart 和 silverlight 控件之间的通信

从一个 webpart 访问信息并在 sharepoint 2010 中的另一个 webpart 中使用它

SharePoint 中的 Silverlight WebPart

SharePoint 沙盒 Webpart 中的图像/图像按钮