首页 > 解决方案 > 用户控制 - (已存在具有相同键的条目)

问题描述

我正在开发一个使用 SharePoint 应用程序页面的 SharePoint 2016 项目。我们有一个单独的用户控件,用于捕获地址,并用于应用程序的其他部分。

为了使用它,我在 SharePoint 应用程序页面中添加了用户控件,如下所示。

<%@ Register TagPrefix="uc" TagName="StreetAndPostalAddress" Src="~/_controltemplates/15/Test.Features.WebParts/QAS/QASAddressStreetAndPostal.ascx" %>

并尝试在页面中使用此控件,如下所示。

<uc:StreetAndPostalAddress id="locationAndPostalAddress" runat="Server" />

一旦我将此控件添加到页面,它就会给我一个错误,如下所示。我已经尝试过,但无法找出线索。主要原因是相同的控件正在另一个页面上工作。请分享您的想法以解决此问题。谢谢你。

我注意到该页面使用了如下更新面板

<asp:UpdatePanel ID="UP_Accordion" runat="server" UpdateMode="Conditional" ClientIDMode="Static" >

关于它的用途有什么想法吗?

在此处输入图像描述

第一个解决方案 它是在页面中定义的 <%@ Control ClientIDMode="static"> ,一旦我将其更改为 <%@ Control ClientIDMode="Predictable" > 问题就解决了。但是页面的功能不起作用。因为 JavaScript/Jquery 不工作。仍然没有解决我的问题:(

标签: c#.netsharepoint

解决方案


最后我弄清楚了为什么页面不起作用。它由手风琴和网格组成。而且我需要重复相同的用户控件。由于设置为静态的 ClientIDMode 我有上述错误。我阅读了这篇文章以了解 ClientIDMode 的概念并将其从页面中删除。使用下面的链接来学习它。

1) https://weblog.west-wind.com/posts/2009/nov/07/clientidmode-in-aspnet-40

删除 ClientIDMode 后,页面中的 jquery 似乎无法正常工作。我必须更改 ID 的 jquery 选择器并使用模式匹配进行选择。一旦更改正确呈现的页面。

2)如何阻止 ASP.NET 更改 ID 以使用 jQuery


推荐阅读