C# 从用户控件到父母版页

C# 从用户控件到父母版页,c#,asp.net,C#,Asp.net,我有一个奇怪的场景,但这是我之前设计的。基本上我有userControl,还有一个child.masterpage 在ascx文件的userControl中,它包含以下内容 <div><%=_template%></div> 现在我要做的是将一个值从用户控件直接传递到parent.masterpage函数,这样我就可以将它放入我创建的parent.masterpage文本中 我怎样才能做到这一点(同样,这是现有的设计,我不能扭转局面)我只是添加了一个功能 &

我有一个奇怪的场景,但这是我之前设计的。基本上我有userControl,还有一个child.masterpage

在ascx文件的userControl中,它包含以下内容

<div><%=_template%></div>
现在我要做的是将一个值从用户控件直接传递到parent.masterpage函数,这样我就可以将它放入我创建的parent.masterpage文本中

我怎样才能做到这一点(同样,这是现有的设计,我不能扭转局面)我只是添加了一个功能

<%@ Master Language="C#" AutoEventWireup="true" MasterPageFile="../common/main.master" %>
<%@ Register Src="UserControl.ascx" TagName="Ord" TagPrefix="uc" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" Runat="Server">
<div class="in"><uc:OrderReceipt ID="myord" runat="server" Visible="true"/>
 <div style="margin-bottom:30px;">
<a href="~/" id="HomeLink" runat="server" class="BackLink">Back to Home Page</a>
</div>
</asp:Content>

您可以使用
Page.Master
属性获取母版页实例

protected someEvent(object sender, EventArgs e)
{
   (Page.Master as ChildMaster).passVal("some string");
}
更多的答案:

我刚看过你的作品,意识到了一些事情。一直困扰我的代码是用户控件

在ascx文件的userControl中 包含以下内容

<div><%=_template%></div>

我还没有看到后面的代码,但我猜用户控件只是用来输出动态HTML。我敢打赌,如果您查看用户控件的代码隐藏(.cs文件),您会发现一个名为
\u template
的变量。它是一个字符串变量,在运行时使用html进行压缩

现在,这还不能回答你的问题,但是,如果你还不知道。。。知道是件好事

现在,下一个谜团是关于子母版页缺少代码隐藏文件的谜团

我的理论是,无论是谁做的,都会出现一些错误,导致它不会自动生成代码隐藏文件。或者,他们从头开始,只是简单地将其添加到项目中,却忽略了编写代码

我制作了一个母版页,然后制作了另一个名为child的母版页。我可以对它进行子类化,下面是标记和代码背后的样子

<%@ Master Language="C#" MasterPageFile="~/Master.master" AutoEventWireup="true"   CodeFile="Child.master.cs" Inherits="Child" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="body" Runat="Server">
</asp:Content>

public partial class Child : Master
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

公共部分类子类:主类
{
受保护的无效页面加载(对象发送方、事件参数e)
{
}
}
在将标记与您的标记进行比较时,这里的关键区别在于我的标记明确提到了
CodeFile
属性

创建一个新的cs文件并遵循命名约定。然后将
code文件
继承
属性添加到子母版页。这将正确连接所有内容,并允许您开始向子母版页添加方法等


让我知道你在哪里,我们会从那里开始。GL

但你知道我有两个大师在中间吗?我在UserControl中,我应该放什么来代替MyMasterType(我在UserControl中)。。我看不出我的方法。。我试过Page.master.master作为MasterPage@user710502 ... 你不是说childMaster只是parentMaster的一个子类吗?如果在parentMaster中有公共方法。。。由于继承,它在childMaster中可用并公开。虽然我在UserControl(child.master)中,但没有.cs文件?我是c语言的新手,还有多少代码,其中一个大师的代码是hugeeee@User710502不,问题在于缺乏理解。我很有信心,有一个cs文件,你只是没有看到。转到解决方案资源管理器,找到表示ChildMaster页的项。右键单击它并选择“查看代码”。这将让您看到每个母版页都具有的代码隐藏页。
<%@ Master Language="C#" MasterPageFile="~/Master.master" AutoEventWireup="true"   CodeFile="Child.master.cs" Inherits="Child" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="body" Runat="Server">
</asp:Content>

public partial class Child : Master
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
}