如何在asp.net母版页中通过asp:content页面调用用户控件?

2026-03-30 12:101阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计736个文字,预计阅读时间需要3分钟。

如何在asp.net母版页中通过asp:content页面调用用户控件?

我不停收到这些请求,让成为xyz的工具,为我们提出web app。因此,在第三个之后,我意识到将它们整合在一起并使用统一页面会更方便。我有一个名为MessageCenter的用户控件,用它来处理‘处理’。

我不断收到这些请求’让我成为xyz的工具’为我们提出的 web app.

因此,在第三个之后,我意识到将它们整合在一起并使用母版页会更容易.

我有一个名为MessageCenter的用户控件,我用它来处理错误,成功和信息性消息,所以我把它放在母版页上.

<%@ Master Language="VB" CodeFile="tfMasterPage.master.vb" Inherits="tfMasterPage" %> <%@ Register Src="MessageCenter/msgCenter.ascx" TagName="msgCenter" TagPrefix="uc1" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>INSERT TITLE HERE</title> <link href="Stylesheets/EogTool.css" rel="stylesheet" type="text/css" /> <link href="stylesheets/TF_Main_Styles.css" rel="stylesheet" type="text/css" /> <link href="stylesheets/TF_Print_Styles.css" rel="stylesheet" type="text/css" media="print" /> </head> <body style="background-color: #eeeeee"> <form id="form1" runat="server"> <div class="page"> <div class="headerArea"> <div class="LogoImg"> <img alt="Transparency Florida" src="images/TF_Logo.jpg" /></div> <div class="SealImg"> <img alt="Shining the Light on Florida's Budget" src="images/TF_Seal.jpg" /></div> </div> <div class="content"> <h1> FIS - EOG Table Maintenance</h1> </div> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <div> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <div class="content"> <div> <uc1:msgCenter ID="MsgCenter1" runat="server" /> </div> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">

通常情况下,当msgcenter在常规的aspx页面上时,我会调用它的方法和代码隐藏中的东西,如下所示:

rtn = dal.deleteRow(CInt(e.CommandArgument), currentTab()) If Not IsNumeric(rtn) Then MsgCenter1.addMessage("An Error occured deletion" & rtn, , , , "E") Else MsgCenter1.addMessage("Delete Successful", , , , "S") End If bindGrid() MsgCenter1.Visible = True End Sub

但是,当我尝试使用母版页从页面上的asp:content事件中执行此操作时,它告诉我未声明msgCenter1.这是某种范围问题.

我读过有关使用findcontrol的内容

ctype(master.findcontrol("tbWhatever"), textbox).text = "FOO"

但是当我尝试强制转换为我的用户控件时,它会抱怨,因为它再次被声明.

我觉得好像我只是错过了一块谜题,但是从昨天下午4点左右起就一直在躲避我.

任何建议,指针或链接将是最受欢迎的.

谢谢.

首先将此指令添加到要访问母版页的内容页面

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

其次,在母版页上设置一个返回您要访问的控件的公共属性

public Label MasterLabel { get { return lblMaster; } private set { //do nothing } }

最后,只需访问内容页面中的控件即可

如何在asp.net母版页中通过asp:content页面调用用户控件?

Master.MasterLabel.Text = "Hello from the content page!";

本文共计736个文字,预计阅读时间需要3分钟。

如何在asp.net母版页中通过asp:content页面调用用户控件?

我不停收到这些请求,让成为xyz的工具,为我们提出web app。因此,在第三个之后,我意识到将它们整合在一起并使用统一页面会更方便。我有一个名为MessageCenter的用户控件,用它来处理‘处理’。

我不断收到这些请求’让我成为xyz的工具’为我们提出的 web app.

因此,在第三个之后,我意识到将它们整合在一起并使用母版页会更容易.

我有一个名为MessageCenter的用户控件,我用它来处理错误,成功和信息性消息,所以我把它放在母版页上.

<%@ Master Language="VB" CodeFile="tfMasterPage.master.vb" Inherits="tfMasterPage" %> <%@ Register Src="MessageCenter/msgCenter.ascx" TagName="msgCenter" TagPrefix="uc1" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="www.w3.org/1999/xhtml"> <head id="Head1" runat="server"> <title>INSERT TITLE HERE</title> <link href="Stylesheets/EogTool.css" rel="stylesheet" type="text/css" /> <link href="stylesheets/TF_Main_Styles.css" rel="stylesheet" type="text/css" /> <link href="stylesheets/TF_Print_Styles.css" rel="stylesheet" type="text/css" media="print" /> </head> <body style="background-color: #eeeeee"> <form id="form1" runat="server"> <div class="page"> <div class="headerArea"> <div class="LogoImg"> <img alt="Transparency Florida" src="images/TF_Logo.jpg" /></div> <div class="SealImg"> <img alt="Shining the Light on Florida's Budget" src="images/TF_Seal.jpg" /></div> </div> <div class="content"> <h1> FIS - EOG Table Maintenance</h1> </div> <asp:ScriptManager ID="ScriptManager1" runat="server" /> <div> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <div class="content"> <div> <uc1:msgCenter ID="MsgCenter1" runat="server" /> </div> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">

通常情况下,当msgcenter在常规的aspx页面上时,我会调用它的方法和代码隐藏中的东西,如下所示:

rtn = dal.deleteRow(CInt(e.CommandArgument), currentTab()) If Not IsNumeric(rtn) Then MsgCenter1.addMessage("An Error occured deletion" & rtn, , , , "E") Else MsgCenter1.addMessage("Delete Successful", , , , "S") End If bindGrid() MsgCenter1.Visible = True End Sub

但是,当我尝试使用母版页从页面上的asp:content事件中执行此操作时,它告诉我未声明msgCenter1.这是某种范围问题.

我读过有关使用findcontrol的内容

ctype(master.findcontrol("tbWhatever"), textbox).text = "FOO"

但是当我尝试强制转换为我的用户控件时,它会抱怨,因为它再次被声明.

我觉得好像我只是错过了一块谜题,但是从昨天下午4点左右起就一直在躲避我.

任何建议,指针或链接将是最受欢迎的.

谢谢.

首先将此指令添加到要访问母版页的内容页面

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

其次,在母版页上设置一个返回您要访问的控件的公共属性

public Label MasterLabel { get { return lblMaster; } private set { //do nothing } }

最后,只需访问内容页面中的控件即可

如何在asp.net母版页中通过asp:content页面调用用户控件?

Master.MasterLabel.Text = "Hello from the content page!";