【问题标题】:How to call content Page function from Master Page如何从母版页调用内容页面功能
【发布时间】:2014-11-10 22:39:26
【问题描述】:

需要从母版页调用内容页函数。 如果需要更多数据,请告诉我。

MasterPage.master.cs 看起来像

 protected void Required_Function(object sender, EventArgs e)
 {
    // call Update_Content_Page() from content page 
 }

Default.aspx 看起来像

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="Content1" ContentPlaceHolderID="contentPlaceHolder" Runat="Server">

<asp:Label ID="Label1" runat="server" Text="Label">Hello people!</asp:Label>

</asp:Content>

Default.aspx.cs 看起来像

using…
public partial class _Default : System.Web.UI.Page
{ 
    protected void Update_Content_Page()
    {
        Label1.Text=”Hello world”;
    }
}

【问题讨论】:

  • 这里是根据您的要求提供的教程:Interacting with the Content Page from the Master Page 我没有在此处粘贴确切的代码,因为解决方案相当复杂。
  • 不是。我在问如何从母版页调用内容页面功能,而不是反过来。
  • 我明白你为什么没有在这里放任何代码。解决方案很复杂,但代码行数很少。我稍微调整了我的代码并且它起作用了。但是,天哪,这根本不简单。我接受它作为答案,因为您链接上的信息帮助我解决了我的问题。
  • @PavelNefyodov 请发布您成功使用的代码。我也有同样的问题..

标签: c# master-pages


【解决方案1】:

你可以这样尝试..不完全是,但会帮助你.....

您可以从基类继承您的页面。然后,您可以在您的基类中创建一个虚拟方法,该方法将在您的页面中被覆盖。然后,您可以像这样从母版页调用该虚拟方法 -

(cphPage.Page as PageBase).YourMethod();

这里,cphPage 是您的母版页中 ContentPlaceHolder 的 ID。 PageBase 是包含 YourMethod 方法的基类。

【讨论】:

  • 它可能有效,但这种方法太复杂了。下次我会试试的。也许:) 但无论如何还是非常感谢你。
  • 你能不能详细点我看不懂??检查这个 - stackoverflow.com/questions/13508855/…
【解决方案2】:

我通常发现,当 MasterPage 需要调用 ContentPage 中的函数时,您的页面设计存在缺陷。 MasterPage 不需要了解有关 ContentPages 的任何信息。但如果你觉得这对你来说是正确的方法,这里是 CodeProject 的guide

【讨论】:

  • 部分同意你的看法。在 90% 的情况下,它会像你说的那样工作得很好。但是没有“一刀切”这样的东西。请参阅以下答案之一中提供的示例:asp.net/master-pages/tutorials/…
  • 是的,你是对的 :) 有时你需要稍微改变规则才能得到你想要的结果。但重要的是要知道你什么时候这样做,为什么这样做:)
【解决方案3】:

我个人使用 jquery 做了一个技巧:当我点击主按钮时,它实际上点击了名为“saveButton”的内容页面按钮并使用了它的功能:

HTML:

enter code here

.master jquery 代码:

function tester() {
        console.log("Testing");
        $("[id$='SaveButton']").click();
    }

我使用 id$='SaveButton' 因为您现在可能知道,当控件位于主控、中继器、网格视图和其他包含控件中时,ASP.NET 会重命名控件。 $id='stuff' 验证控件 ID 是否以 'stuff' 结尾。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    相关资源
    最近更新 更多