在Visual WebPart中使用外部项目asp.NET用户控件(ascx)

时间:2013-01-15 16:21:39

标签: asp.net sharepoint sharepoint-2010 mvp ascx

我是sharepoint2010的新手,我已经习惯了ASP web开发。 我正在做的是引用外部项目中的.ascx,如Scott Guthrie的文章所述: http://webproject.scottgu.com/CSharp/UserControls/UserControls.aspx

以及SharePoint中MVP的这篇文章: http://www.henrycordes.nl/post/2009/04/29/Model-View-Presenter-design-pattern-in-Sharepoint.aspx

我有一个测试Web应用程序,其中包含对webControls(Ascx)库项目的项目引用,并且有一个预构建行,它通过ascx复制到Web应用程序项目中的文件夹。 然后我按照正常情况从aspx页面引用ascx控件!

但是在SharePoint中我尝试了同样的技巧并得到了这个错误:

“分析器错误 说明:解析为此请求提供服务所需的资源时发生错误。请查看以下特定的解析错误详细信息并适当修改源文件。

分析程序错误消息:此页面上不允许引用的文件“/UserControls/Calculator.ascx”。“

事实上,ascx的路径根本没有被解析,因为如果我改为不存在的目录,我会得到同样的错误。或者,如果我将ascx复制到'14'目录。

在SP2010中部署ascx需要采取哪些步骤?

这里是我用来在sp visual webpart代码aspx页面中引用ascx的行:

<%@ Register tagPrefix="sjb" tagName="calc" src="~/UserControls/Calculator.ascx" %>
<sjb:calc ID="calc" runat="server" />

1 个答案:

答案 0 :(得分:0)

您需要将控件部署到_layouts / controltemplates目录。这将使他们安全地部署到农场。

您要做的最好的事情是将可视化的webpart添加到项目中作为示例,并将示例ascx文件替换为您的。

然后在你的主页/页面中

<%@ Register TagPrefix="mfKA" TagName="KeepAliveControl" Src="~/_controltemplates/LoginKeepAlive/KeepAlive/KeepAliveUserControl.ascx"%>