gpt4 book ai didi

c# - 从内容页获取并转换 Masterpage UserControl 以访问特定的 UC 属性

转载 作者:行者123 更新时间:2023-11-30 22:19:04 24 4
gpt4 key购买 nike

我有一个 MasterPage (MyBoxx.Master) 引用了 2 个用户控件:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MyBoxx.master.cs" Inherits="MyBoxxMaster" %>
<%@ Register TagPrefix="uc1" TagName="Header" Src="Header.ascx" %>
<%@ Register TagPrefix="uc1" TagName="Footer" Src="Footer.ascx" %>

我的用户控件“Header”包含一个搜索框。我想在访问某些页面时隐藏此搜索框。因此,我向我的用户控件添加了一个 bool 属性,并在呈现用户控件时使用此属性来确定是否显示搜索框:

public partial class uxHeader : System.Web.UI.UserControl
{

bool _showSearch = true;
public bool ShowSearch
{
get { return _showSearch; }
set { _showSearch = value; }
}
[...]
protected void Page_Load(object sender, EventArgs e)
{
[...]
searchBox.Visible = _showSearch;

}
}

然后我尝试从内容页面访问这个“ShowSearch”属性:

((uxHeader)Page.Master.FindControl("Header1")).ShowSearch = false;

问题是我在尝试编译时遇到以下错误:

Error   15  The type or namespace name 'uxHeader' could not be found (are you missing a using directive or an assembly reference?)

问题是我确定我让它在某个时候可以工作和编译,因为它可以在先前发布的生产版本上工作。但是现在我正在对同一站点中的其他内容进行更改,并且无法再编译。

从关于 SO 的各种帖子中,我尝试将以下行添加到我的内容页面 aspx 中:

<%@ MasterType VirtualPath="~/MyBoxx.master"%>
<%@ Reference VirtualPath="~/MyBoxx.master" %>

没有任何成功!我还看到了一些关于生命周期页面的答案,但这不是这里的问题,因为我在编译时遇到错误,而不是在执行时遇到错误。

如果有人对我如何永久解决此问题有任何建议,我将不胜感激。

谢谢!

最佳答案

好吧,我找到了几个可行的解决方案...而且我想我更早地理解了它是如何/为什么起作用的

1) 编译似乎在其中发挥了作用。如果我注释该行,编译该站点,然后再次尝试添加该行,则 uxHeader 类型在 VS 中是“可用的”,我可以再次编译该站点并取消注释该行...

2) 由于第一个解决方案显然不是长期解决方案,我发现在内容页面 aspx 中引用用户控件(当然没有实际使用它)可以解决问题:

<%@ Register TagPrefix="uc1" TagName="Header" Src="Header.ascx" %>

3) 我也试过这个,我觉得最干净...在母版页中,公开一个公共(public)属性:

public uxHeader PageHeader
{
get
{
return Header1;//Header1 is the id of the userControl dropped in masterpage
}
}

在内容页面 aspx 中,我然后输入:

<%@ MasterType VirtualPath="~/DBoxx.master"%>

然后,仍然在内容页面中,但在代码隐藏中,并且在网站编译之后,我可以使用:

this.Master.PageHeader.ShowSearch = false;

希望这对将来寻求有关该主题的帮助的人有所帮助。我看到这是一个反复出现的问题

关于c# - 从内容页获取并转换 Masterpage UserControl 以访问特定的 UC 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15760361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com