Sharepoint上的ASPX页面中的条件显示

时间:2008-09-03 12:43:51

标签: asp.net sharepoint

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

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

两种解决方案:

  1. 根据this site更改 web.config 中的PageParserPath

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

  3. 我想知道,最佳做法是什么?排名第一的看起来是正确的选择,但更改 web.config 是我想尽可能少量使用的。

4 个答案:

答案 0 :(得分:1)

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

我必须做一些100%的研究,但我的理解是内联代码是可以的,提供它在一个仍然是幻影的页面,从而受到信任。您可以通过功能将您的功能添加到网站吗?

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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

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

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

答案 3 :(得分:0)

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

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