从Master Page调用方法

时间:2012-04-02 18:15:51

标签: c# asp.net textbox formview master-pages

我想调用放置在母版页中的标记的方法

像这样

<script runat="server">  
protected void usernameTextBox_TextChanged(object sender, System.EventArgs e)
{
}  
</script>

在使用此母版页的表单中。

注意:我将使用此方法,例如formview中的文本框

感谢。

3 个答案:

答案 0 :(得分:1)

你不应该像函数那样调用事件处理程序,所以除非在内容页面上重用另一个控件的事件处理程序,否则你应该在母版页中创建一个公共方法来执行事件处理程序正在做的事情:

在母版页中:

protected void usernameTextBox_TextChanged(object sender, EventArgs e)
{
    SomeMethod();
}

public void SomeMethod()
{
    //do your logic in this method
}

在页面上,将此行添加到页面指令:

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

将该行添加到page指令后,您可以调用如下方法:

Master.SomeMethod();

答案 1 :(得分:0)

在您的页面中

添加此指令以及页面指令,如下所示:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="A.aspx.cs" Inherits="StackOverflow.A" %>
<%@ MasterType VirtualPath="~/Site.Master" %>

并从页面内的某个方法调用方法foo()(这在您的母版页中定义)(确保这是公开的)

((SiteMaster)this.Master).foo();

我的母版页名称是SiteMaster

这就是你可以在主页面中调用一个memeber的方法。我不确定它是否适用于你想要调用的方法(最有可能的是,如果传递的参数不够好)

答案 2 :(得分:0)

在表单加载时,将母版页文本框处理程序分配给内容页面文本框事件。

protected void Page_Load(object sender, EventArgs e)
{
    MasterPageClassName MyMasterPage = (MasterPageClassName)Page.Master; 

    TextBox t = new TextBox();
    t.TextChanged += new EventHandler(MyMasterPage.usernameTextBox_TextChanged);
}