在Sharepoint上的ASPX页面中有条件显示
我想知道这种情况的最佳实践是:
我有一个带有ASPX页的Sharepoint网站(MOSS2007)。但是,我不能使用任何内联源,并且事件处理程序之类的东西也无法使用,因为默认情况下,Sharepoint不允许ASPX页上的服务器端脚本。
两种解决方案:
- 根据此站点在web.config中更改
PageParserPath
<PageParserPaths> <PageParserPath VirtualPath="/pages/test.aspx" CompilationMode="Always" AllowServerSideScript="true" /> </PageParserPaths>
- 创建所有控件并将它们连接到.CS文件中的事件,从而完全消除ASP.net的某些好处
我想知道,最佳做法是什么?第一看起来是正确的选择,但是我想尽可能地少使用更改web.config的方法。
解决方案
回答
ASPX页做什么?它增加了什么功能?我们如何将页面添加到网站中?从外观上看,这只是文档库中的" Web部件页"。
我必须做一点研究才能达到100%,但是我的理解是,内联代码是可以的,只要它在页面上仍然保持幻像并因此受到信任即可。我们可以通过功能将功能添加到站点吗?
我会避免选择1,对我来说似乎是个坏建议。在页面中允许服务器端代码是一种安全隐患,因为这样一来,有人就有可能注入恶意代码。当然,我们可以保护页面的安全,但是我们正在谈论可能具有相当严重的权限的远程执行。
回答
好吧,这是一个托管用户控件的页面。这是一个自定义.aspx页面,将在该网站上创建,特别是因为我不想创建WebParts。
它本质上是一个在Sharepoint内运行的应用程序,它利用列表和其他功能,但是所有功能仅在该应用程序内有用,因此我想避免将仅在一个地方工作的无数Web部件充斥Web部件库。
回答
因此,在那种情况下,我会将其包装为功能并通过解决方案进行部署。这样,我认为我们可以避免遇到的问题。如果我们还计划在其他站点中使用此功能,则此功能特别有用。
我们也可以将Web部件直接嵌入页面中,就像执行WebControl一样,从而避免出现画廊混乱。
回答
到目前为止谢谢。我已经成功尝试了Andrew Connel的解决方案:
http://www.andrewconnell.com/blog/articles/UsingCodeBehindFilesInSharePointSites.aspx
将其包装到解决方案中是其中的一部分,但是主要问题是如何将代码放入其中,并且更倾向于选择2,而不必在代码中创建控件。
我所缺少的:
在.cs文件中,需要手动添加"受保护的按钮触发器";东西,因为使用类库时没有自动生成的.designer.cs文件。