[英]From UserControl to parent master page
我有一个奇怪的场景,但这就是它在我之前的设计方式。 基本上我有userControl,还有一个child.masterpage
在 ascx 文件的 userControl 中,它包含以下内容
<div><%=_template%></div>
child.masterpage 继承自 parent.masterpage,在 child.masterpage 中有对 userControl 的调用
<asp:Content><ucc:UserControl></ucc>
parent.masterpage 中有其他字段,它有一个带有 c# function 的.cs文件
public void passVal(string s)
现在我要做的是将用户控件中的值直接传递给 parent.masterpage function 以便我可以将它放在我创建的 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");
}
更多答案:
我只是在查看您的 OP 并意识到一些事情。 一直困扰我的代码是用户控件。
在 ascx 文件的 userControl 中,它包含以下内容
<div><%=_template%></div>
我还没有看到后面的代码,但我的猜测是用户控件只是用于 output 动态 HTML。 我敢打赌,如果您查看用户控件背后的代码(.cs 文件),您会发现一个名为_template
的变量。 它是在运行时使用 html 抽取的字符串变量。
现在,这并不能回答你的问题,但是,如果你还不知道......很高兴知道 =P
现在,下一个谜团是关于您丢失的子母版页文件隐藏代码的谜团。
我的理论是,无论是谁做了它,都会出现一些错误,导致它不会自动生成隐藏文件的代码。 或者,他们从头开始制作,只是简单地将其添加到项目中,但也忽略了后面的代码。
我制作了一个母版页,然后制作了另一个名为 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)
{
}
}
在将标记与您的标记进行比较时,这里的主要区别在于我明确提到了CodeFile
属性。
创建一个新的 cs 文件并遵循命名约定。 然后将CodeFile
和Inherits
属性添加到您的子母版页。 这应该正确连接所有内容,并允许您开始向子母版页添加方法等。
让我知道你在哪里,我们会从那里拿走它。 总帐
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.