【发布时间】:2019-05-07 14:37:17
【问题描述】:
我目前正在构建一个网络应用程序,它将成为我公司的新数据中心(内联网网站)。我将它连接到活动目录并设置了一个用户组以允许页面编辑。我正在创建一个用户控件,以赋予我们的 QA 经理更多的编辑能力,这样他就可以管理网站,而无需我重新编写任何代码。
这是我的问题: 因为我使用用户控件作为新的编辑控件;我需要能够访问正在使用编辑控件的任何页面上的控件。对于我的生活,我无法弄清楚如何。
这是我正在尝试做的一个简单示例:
WebPartManager wpm = (WebPartManager)WebPartManager.GetCurrentWebPartManager(this.Page);
TextBox testBox = new TextBox
{
ForeColor = System.Drawing.Color.Blue,
ID = "testID",
Width = 500,
Height = 200
};
GenericWebPart testGWP = wpm.CreateWebPart(testBox);
wpm.AddWebPart(testGWP, WebPartZone4, 1); //heres where I get my error. WebPartZone4 is a webPartZone in one of my pages.
如果我在显示 WebPartZone 的页面上运行此代码,则可以达到预期的效果,因此我知道该代码有效。我的用户控件只是无法在另一个页面上看到 WebPartZone。任何帮助都会很棒。谢谢。
【问题讨论】:
-
这不是因为每个页面都包含并且您需要从另一个页面发布/获取数据吗?我很确定这是here 概述的保护问题
-
@CaptainWibble 我已经阅读了那篇文章。它指的是在同一个 Web 表单中使用多个类或命名空间。我试图让我的用户控件识别另一个页面的控件。我已经看到通过一个用户控件使用会话状态更改另一个用户控件的属性来完成这种效果。我希望有办法做类似的事情。
-
好吧,一种方法是禁用@page 中的ValidateRequests,并使用带有AJAX 的ASHX 处理程序异步运行任何访问请求,因为这是在Intranet 上(注意这是一种用于检查脚本注入的方法)。
-
你可能刚刚给了我一个想法。如果可行,我将测试我的理论并发布答案。谢谢。
-
是的...我在 ASP.NET Webforms 中开发网站时遇到了类似的问题。这是旧技术,所以你可能需要旧的解决方案......试试单例。这是过时的模式,但在 Webforms、Winforms 和旧的 Windows Mobile 应用程序中仍然有用。尝试此站点以获取更多信息、理解、类型和示例:link
标签: c# asp.net webforms user-controls web-parts