首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将用户控件从单独的程序集添加到Sharepoint应用程序页?

如何将用户控件从单独的程序集添加到Sharepoint应用程序页?
EN

Stack Overflow用户
提问于 2012-10-01 13:42:00
回答 2查看 2.6K关注 0票数 1

这个问题可能有一个非常简单的解决方案,但由于我一点也不了解Sharepoint,而且似乎无法在这个问题上搜索我的智慧之路,也许你们中的一个人可以引导我朝着正确的方向前进。

背景:目前我在一个项目中工作,我们的网络解决方案的一部分是由Sharepoint组成的,我以前绝对没有从Sharepoint那里获得过任何经验。最近,我一直在为看起来非常简单的任务而挣扎,在我们的解决方案中的Sharepoint页面中添加了一个(web)用户控件。这一任务有两项重要要求;

  • 用户控件和代码隐藏必须位于并组成一个单独的程序集。
  • 必须签署该程序集

用户控件程序集实际上是另一个带有ASP.NET的Default.aspx Web应用程序,因此我可以使用Default.aspx通过模型调试用户控件。当我通过Default.aspx调试它时,它可以很好地工作,用户控件就会显示出来,我可以按预期使用它。

我的web.config中有以下几行:

代码语言:javascript
复制
<SafeControls>
[..]
<SafeControl Assembly="MyMainNamespace.SubNamespace.SelectorPopup, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7fa78676161515a2" Namespace="MyMainNamespace.SubNamespace.SelectorPopup" TypeName=" *" Safe=" True " />
[..]
</SafeControl>

在Sharepoint页面上,我列出了以下内容:

代码语言:javascript
复制
<% @Register TagPrefix= "Selector" Namespace="MyMainNamespace.SubNamespace.SelectorPopup" Assembly="MyMainNamespace.SubNamespace.SelectorPopup" %>
[..]
<Selector:SelectorBoxControl runat="server" SelectorType="ContentArea" ></ Selector: SelectorBoxControl>

我们的项目是部署在ASP.NET (Windows 2003)上的.NET 3.5 (2.0)上的一个.NET web项目,我们使用的是Server 2005的Sharepoint 2007。生成、部署和标记都可以。

问题:在部署到我们的测试环境后,用户控件根本不显示在Sharepoint页面上,我不知道为什么。

构建和部署很好,而且Sharepoint页面甚至会显示出来,只是我的控件在任何地方都看不到。实际上,HTML响应绝对不包含我的用户控件的跟踪。即使我把纯HTML文本和没有功能的控件。没有错误消息,事件处理程序也没有提供有关可能的错误或警告的信息。

我是不是遗漏了什么?有什么是我需要启用的,一个属性我需要添加,还是某个地方的引用?不管怎么说,我可以得到这种非显示行为生成一个可以理解的错误消息吗?

EN

回答 2

Stack Overflow用户

发布于 2012-10-01 14:16:35

我认为您需要向GAC注册您的dll以便SharePoint找到它。不过,我可能弄错了,抄袭到垃圾桶里就行了。但是,我确信您在注册时需要使用Assembly属性中的完全限定名。

代码语言:javascript
复制
<% @Register TagPrefix= "Selector" Namespace="MyMainNamespace.SubNamespace.SelectorPopup" Assembly="MyMainNamespace.SubNamespace.SelectorPopup, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7fa78676161515a2" %>
票数 0
EN

Stack Overflow用户

发布于 2012-10-05 17:12:57

我发这篇文章是为了回答这个问题,因为尽管我们交换了意见,但我不确定你我一直在谈论同样的事情。

如您所知,ASP.NET中有两种控件:用户控件和web自定义控件。用户控件有一个包含标记的.ascx文件--这一点很重要--不能在项目之间共享。编译他们所在的项目并引用该程序集是没有好处的,因为.ascx文件不是程序集的一部分。Web自定义控件没有标记文件:它们完全是用代码创建的,它们的控件是以编程方式创建的,并添加到自定义控件的控件集合中。

因此,您要替换的独立程序集中的第三方控件是一个web自定义控件,或者--如果它在源中使用单独的标记文件--它必须使用一个技巧,例如虚拟路径提供程序技巧。

您已经谈到了用户控件和代码隐藏,就好像它们是分开的一样,这使我相信您确实在谈论web用户控件。但是这些都不能在网络项目之间共享。如果您的控件需要驻留在外部程序集中,最简单的方法就是将其重写为以编程方式构建其内容的自定义控件。

还有其他选项,例如虚拟路径提供程序解决方案,或者Scott (这里)的著名解决方案。但最简单的选择是将其编写为自定义控件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12674489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档