【问题标题】:Is it possible to remove a user control (.ascx) present in master page (.master) from content (.aspx) page?是否可以从内容 (.aspx) 页面中删除母版页 (.master) 中存在的用户控件 (.ascx)?
【发布时间】:2015-08-05 21:31:05
【问题描述】:

我有一个母版页,它被继承到很多内容页。我有一个特定页面,我不希望母版页中出现其中一个用户控件。我不想为此创建一个单独的母版页。我想知道是否有任何方法可以防止母版页中存在的用户控件被继承到子页/内容页。感谢你的帮助。谢谢!

在用户控件中,

protected void Page_Init(object sender, EventArgs e)
{
    Css.Register(this, "/css/reset.css", BrowserTarget.All, true);
}

在母版页中,添加了用户控件

我正在尝试删除/防止被继承的部分(reset.css 中的 css) 内容页面

ol, ul {
list-style: none;
}

【问题讨论】:

    标签: c# .net master-pages


    【解决方案1】:

    可以在子控件中使用:

    ((UserControl)this.Master.FindControl("userControlName")).Visible = false;
    

    【讨论】:

    • 谢谢。我不想隐藏它。我想在内容页面中完全删除它。我不希望它被继承
    【解决方案2】:

    为了使控件在您所说的内容中根本不存在并且您隐藏的反馈不符合您的需求,我猜删除控件也不会。

    这里唯一的其他选择是将母版页更改为具有加载控件的标志。这将方法从“删除此如果”更改为“包括此时间”。然后,在您的呼叫页面中,您需要设置该标志。为了使这个新的更改不那么具有侵入性,请将默认设置为 true,并在此页面中将其设置为 false。

    【讨论】:

    • 谢谢。我同意,但需要在很多内容页面中进行更改。更好的是创建一个单独的母版页
    • 这就是我提到将页面的默认标志设置为 true 的原因。然后,您只需要触摸异常的页面。
    • 在母版页代码后面(.master.cs),添加下面的 private string _lblName = null;公共字符串 lblName { 获取 { 返回 _lblName; } 设置 { _lblName = 值;在母版页设计 (.master) 中,添加了以下内容。 ' ' 我在不希望继承控件的内容页面中将 lblName 的值设置为“true”。但它仍然会被继承。
    • 继承是什么意思?您如何验证这一点?
    • css 被应用到内容页面
    【解决方案3】:

    试试这个

        MasterPage master = this.Master;
        UserControl userControl = (UserControl)master.FindControl("userControlName");
        if(userControl != null)
    {
        master.Controls.Remove(userControl );
    }
    

    【讨论】:

    • 谢谢。这不会引发任何错误。但它仍然继承了用户控件。在用户控件的page_init中,注册了一些css。我试图避免该css被继承。上面没有抛出任何错误,但 css 仍然被注册。
    • 尝试从您的用户控件中删除 css 类属性,如下所示userControl.Attributes.Remove("class"); userControl.Attributes.Add("class", "");编辑您的问题并添加您的用户控件 page_init 代码
    猜你喜欢
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    相关资源
    最近更新 更多