在 Sharepoint 2013 中将用户控件添加到 Web 部件

Posted

技术标签:

【中文标题】在 Sharepoint 2013 中将用户控件添加到 Web 部件【英文标题】:Add user control to web part in Sharepoint 2013 【发布时间】:2012-12-24 16:26:52 【问题描述】:

我有一个只有一个 <div id="newsListDiv" runat="server"></div> 元素的可视 Web 部件(使用标准 Visual Stuido 2012 模板从“添加新项目”表单创建)。我想使用以下代码以编程方式向其中添加我自己的用户控件:

protected void Page_Load(object sender, EventArgs e)
    
    NewsLine newsLine = Page.LoadControl(@"~/_ControlTemplates/MainTheme/NewsLine.ascx") as NewsLine;
    newsListDiv.Controls.Add(newsLine);

但是当我部署解决方案并将 Web 部件添加到页面时,它会显示一个错误页面,告诉我文件“/_ControlTemplates/MainTheme/NewsLine.ascx”不存在。但是,如果我查看文件夹“C:\Program Files\Common Files\microsoft shared\Web Server Extensions\15\TEMPLATE\CONTROLTEMPLATES\MainTheme”,我可以看到该文件存在于那里。我尝试将信任级别设置为“完全”,但遇到了同样的错误。我还尝试在 .ascx 文件中添加用户控件,如下所示:

<%@ Register Src="~/_controltemplates/MainTheme/NewsLine.ascx" TagPrefix="uc1" TagName="NewsLine" %>

<div id="newsListDiv" runat="server">
    <uc1:NewsLine runat="server" id="NewsLine" />
</div>

这样会出现编译错误:“当前上下文中不存在名称'InitializeControl'”。我还注意到,只要将 Register 或 Reference 行(带有用户控件的路径)添加到我的 .ascx 文件中,.g.cs 文件就会变为空白!当我删除那条线时,它会再次填满。我尝试了许多不同的路径写作,如“../_controltemplates/”、“/controltemplates/15/”等。但它们都没有任何区别。我在这里绝望了,请帮助!

【问题讨论】:

【参考方案1】:

您忘记再尝试一个选项。访问 _layouts 文件夹时也是如此。您应该指定 15 个配置单元。

正确的路径是“~/_ControlTemplates/15

 NewsLine newsLine = Page.LoadControl(@"~/_ControlTemplates/15/MainTheme/NewsLine.ascx") 

【讨论】:

也试过了,还是不行。在我看来,自动生成 .g.cs 文件的工具存在一些问题。尝试重新安装VS,但这也无济于事。我决定暂时不使用 UserControls,但我知道它可能不起作用,因为我在 VS 中创建了 ControlTemplates 文件夹而不是映射文件夹。稍后再检查... 这帮助我在 2010->2013 年升级“bla-bla.ascx”文件时找不到问题【参考方案2】:

遇到了同样的问题。我没有看到将 15 添加到路径的建议,这对我有用。我的参考文献和你的参考文献之间的唯一区别是我一开始没有 ~。 / 是第一个字符。

【讨论】:

【参考方案3】:

我有同样的问题,只有当我在后面的代码中执行它时它才有效,但我没有运气像我使用的任何其他控件一样将它添加到 ascx! - 上帝为什么Sharepoint的一切都如此不同?!!!!

【讨论】:

以上是关于在 Sharepoint 2013 中将用户控件添加到 Web 部件的主要内容,如果未能解决你的问题,请参考以下文章

如何从处理此事件的方法中将单击按钮的 ID 检索到 SharePoint 2013 Web 部件中?

嵌套用户控件在可视 Web 部件中不起作用

SharePoint 2010 用户控件保存属性

Sharepoint 2010通过wsp将控制注册为安全

sharepoint 2013 附件控件FileUpload怎样检验是否为图片的方法

带有常用按钮菜单栏的 Sharepoint 2013 列表视图