如何从母版页调用内容页功能

5

需要从Master Page中调用content Page函数。

如果需要更多数据,请告诉我。

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看起来像

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

这是你请求的教程:从主页面与内容页交互。我不在这里粘贴确切的代码,因为解决方案相当复杂。 - Maxim V. Pavlov
1
可能是调用主页面中的方法的重复问题。 - Grant Thomas
2
不是这样的。我想知道如何从母版页调用内容页函数,而不是反过来。 - Pavel Nefyodov
我明白为什么你没有在这里放任何代码。解决方案很复杂,但代码行数很少。我稍微调整了一下我的代码,它就工作了。但是,天哪,这一点都不直接了当。我接受它作为答案,因为你链接中的信息帮助我解决了我的问题。 - Pavel Nefyodov
@PavelNefyodov 请发布您成功的代码。我也有同样的问题。 - Krishna Thota
3个回答

6
你可以尝试像这样做…虽然不完全一样,但会对你有所帮助…
你可以从一个基类继承你的页面。然后在你的基类中创建一个虚方法,在你的页面中进行重写。然后你可以这样从主页调用该虚方法 -
(cphPage.Page as PageBase).YourMethod();

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


可能会起作用,但这种方法过于复杂。我下次会尝试一下。也许 :) 但无论如何,非常感谢你。 - Pavel Nefyodov
请问您能否详细说明一下,我无法理解?请查看此链接 - http://stackoverflow.com/questions/13508855/accessing-content-page-method-from-masterpage-method - Krishna Thota

1

我通常发现,当MasterPage需要在ContentPage中调用函数时,您的页面设计存在缺陷。MasterPage不应该知道任何关于ContentPages的信息。但是,如果您认为这是正确的方式,这里有一个来自CodeProject的guide


部分同意你的说法。在90%的情况下,它确实会像你说的那样工作。但是并没有所谓的“一刀切”的方法。请查看下面其中一个答案中提供的示例:http://www.asp.net/master-pages/tutorials/interacting-with-the-content-page-from-the-master-page-cs - Pavel Nefyodov
是的,你说得对 :) 有时候为了得到想要的结果,需要稍微改变规则。但是重要的是知道何时以及为什么这样做 :) - Eystein Bye

1
当我点击主按钮时,我使用jQuery进行了一个技巧:它实际上是点击了名为“saveButton”的内容页面按钮并使用了它的功能:
HTML:
enter code here

.主要的jQuery代码:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接