0

我想知道这种情况的最佳做法是什么:

我有一个带有 ASPX 页面的 Sharepoint 站点 (MOSS2007)。但是,我不能使用任何内联源,并且事件处理程序之类的东西不起作用,因为默认情况下,Sharepoint 不允许在 ASPX 页面上使用服务器端脚本。

两种解决方案:

  1. 根据此站点更改web.configPageParserPath中的

    <PageParserPaths>
    <PageParserPath VirtualPath="/pages/test.aspx" 
            CompilationMode="Always" AllowServerSideScript="true" />
    </PageParserPaths>
    
  2. 创建所有控件并将它们连接到.CS文件中的事件,从而完全消除 ASP.net 的一些好处

我想知道,最佳做法是什么?第一个看起来是正确的选择,但更改web.config是我希望尽可能谨慎使用的东西。

4

4 回答 4

1

ASPX 页面有什么作用?它增加了什么功能?您如何将页面添加到网站中?从外观上看,这只是文档库中的“Web 部件页”。

我必须做一些研究才能做到 100%,但我的理解是内联代码是可以的,只要它位于一个仍然是幻影的页面中,因此是受信任的。您可以通过功能将您的功能添加到网站中吗?

我会避免选项 1,这对我来说似乎是个坏建议。在您的页面中允许服务器端代码存在安全风险,因为这样就可能有人注入恶意代码。当然,您可以保护页面,但我们正在谈论可能具有一些非常严格的权限的远程执行。

于 2008-09-03T18:17:42.037 回答
1

因此,在这种情况下,我会将其包装在一个功能中并通过解决方案进行部署。这样我认为你会避免你所看到的问题。如果您也计划在其他站点中使用此功能,这将特别有用。

您还可以直接在页面中嵌入 Web 部件,就像您执行 WebControl 一样,从而避免任何画廊混乱。

于 2008-09-04T06:50:25.147 回答
1

感谢到目前为止。我已经成功尝试了 Andrew Connel 的解决方案:

http://www.andrewconnell.com/blog/articles/UsingCodeBehindFilesInSharePointSites.aspx

将其包装成解决方案是其中的一部分,但主要问题是如何将代码放入其中,并且更倾向于选项 2,而无需在代码中创建控件。

我错过了什么:
在 .cs 文件中,需要手动添加“受保护的按钮触发器”;东西,因为使用类库时没有自动生成的 .designer.cs 文件。

于 2008-09-04T13:14:23.647 回答
0

嗯,这是一个承载用户控件的页面。这是一个将在站点上创建的自定义 .aspx 页面,特别是因为我不想创建 WebPart。

它本质上是在 Sharepoint 中运行的应用程序,利用列表和其他功能,但所有功能仅在应用程序内有用,因此我希望避免在 Web 部件库中充斥着无数只能在一个地方工作的 Web 部件。

于 2008-09-03T20:30:28.753 回答