我在 Sharepoint 和 Project Server 上开发了一个相当大的项目,设计为多层应用程序。我以编程方式管理某些 Web 部件页面上的 Web 部件。根据用户在其中一个网页中的选择,将适当的网页部件添加到另一个网页部件页面的网页部件集合中。我的问题是我根本不知道在哪里管理 Web 部件,我应该在 BLL 中进行管理,然后让包含业务逻辑的程序集引用 Web 部件所在的 UI 程序集吗?(我需要在将 Web 部件添加到集合时对其进行实例化,因为我不想使用表示 Web 部件 dwp 的硬编码字符串。)
4 回答
您能否将 Web 部件打包为一个功能或一组功能,然后通过 Web 部件管理器类简单地管理功能激活/停用?
任何需要在适当的 Web 部件页面上进行的 Web 部件程序化按摩都可以在功能接收器中处理,因此您的经理不需要非常了解 Web 部件 UI。
HTH, jt
Web 部件通常最好使用功能/解决方案框架进行管理。您可以将您编写的 webpart 类视为任何其他 web 控件,因此是 ui 层的一部分。我通常将 xml 文件(.webpart 或 .aspx 文件)中的信息保持在最低限度。如果您专门管理它们,则根本不需要使用声明性代码文件。
简短的回答:webpart 是特定于共享点的 ui,应该不了解业务层。
简短的回答可能是“不,你不应该在 BLL 中这样做”。纯粹主义者可能会争辩说,虽然 BLL 可以正确地确定用户可以做什么或不可以做什么,但最终要由 UI 层来确定要显示的适当 Web 部件。
例如,BLL 可能会确定用户的能力并将其公开为角色、权限或具有域相关含义的其他内容(例如时间表批准者角色、批准时间表权限等)。然后这些可能会被 UI 层映射到一组 Web 部件(例如时间表批准 Web 部件)。通过这种方式,BLL 有效地确定了用户的能力,而 UI 层确定了这些能力的 UI。
这实际上取决于您为 BLL 和 UI 层使用的模式,以及您希望遵循的严格程度。
如果您正在执行 MVP 模式,那么我建议您Page
实现一个具有以下一个(或多个)选项的接口:
- 要加载的堆栈
Presenters
被添加到 - 每个 Web 部件的Load_
WebPartName
事件,然后应调用该事件以指示需要加载哪些 Web 部件
要成为严格的 MVP,您不应在BLL 项目中引用以下程序集:
- 系统.Web
- 微软共享点
- Microsoft.SharePoint.*
(所有 SharePoint 程序集都在模型或 UI 项目中,BLL 只是连接到适当的飞节)