【问题标题】:ASP.NET masterpage :- how to remove usercontrol from masterpageASP.NET 母版页:- 如何从母版页中删除用户控件
【发布时间】:2017-10-26 15:03:35
【问题描述】:

我有一个masterpage,上面有一个usercontrol (changecity.ascx)。现在我在 2 个 aspx 页面上使用相同的母版页:

  1. selectcity.aspx
  2. signup.aspx

但我只想在selectcity.aspx 上显示changecity.ascx

我可以设置它s visibility from child pages but I don't want to do that because page events ofchangecity.ascx` 仍在触发。

我希望将其从 masterpage 中完全删除,这样就不会触发 changecity.ascx 的任何事件。

到目前为止我做了什么:--- 我在signup.aspxpreinit 事件中从masterpage 中删除了控件。但是changecity.ascx 的页面生命周期事件仍在触发。我怎样才能防止这种情况发生。

【问题讨论】:

    标签: c# asp.net master-pages


    【解决方案1】:

    您可以尝试在代码隐藏中加载您的控件并将其添加到页面中。如果您只是在 .aspx 中尝试 if ,它将被渲染但不会被输出。

    aspx:

    <asp:placeholder id="changeCityControl" runat="server" />      
    

    代码隐藏:

    ChangeCityControl ccControl = (ChangeCityControl)LoadControl("/changecity.ascx")
    if (renderChangeCityControl){    
        changeCityControl.Controls.Add(ccControl);
    }
    

    有关详细信息,请参阅this microsoft 页面。

    【讨论】:

    • 我会检查这个。我认为这可能会有所帮助
    • 此控件将如何在母版页上占据位置。我需要将它放在面板内吗
    • 你试过在OnInit(Page_Init)中添加控件吗?
    • LoadControl 加载控件后控件是否为空?尝试使用 LoadControl(Type, Object[]) 代替,其中 Type 是控件的类型, Object[] 是要传递的参数。可能是路径不正确
    • 此外,在答案中链接的微软页面中,他们在 Page_Init 中使用它:“当您将控件加载到容器控件中时,容器会引发所有添加的控件事件,直到它赶上“
    猜你喜欢
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多