在另一页面上调用一个函数

时间:2012-01-04 03:24:17

标签: c# function master-pages

我可以将我的母版页中的函数调用到我的默认页面吗?当我在母版页上单击按钮时,我需要在默认页面上重新加载内容。我正在使用会话变量。但页面在设置变量之前加载。它引起了一个问题。所以我想在我的母版页上调用默认页面上的一个函数。

default.aspx.cs

private void SendSessionVariables(object p, object p_2)
{
    //call this function from my master page
}

Masterpage.aspx.cs

protected void LinkButton1_Click1(object sender, EventArgs e)
{
    Session["SexType"] = "M";
    //session is set now i need to call the function on my default page
}

5 个答案:

答案 0 :(得分:2)

answer to a similar question检查此Robert Paulson。他开始了:

  

您尝试做的更具体的例子会很有用。否则你会得到各种各样的答案,其中很多都是不合适的。

     

您应该将公共代码放在App_Code文件夹中。您还应该在表单代码隐藏中没有任何业务逻辑。

     

您需要一个页面来调用另一个页面中的方法这一事实表明您还没有这样做。页面用于显示和解释操作,但它们不应该包含任何业务逻辑。

答案 1 :(得分:0)

protected void LinkButton1_Click1(object sender, EventArgs e)
{
    Session["SexType"] = "M";
    //session is set now i need to call the function on my default page
    if (Page is _default)
        ((_default)Page).SendSessionVariables(...)
}

您需要将该方法定义为公开

答案 2 :(得分:0)

您可以尝试使用反射

Type t = this.ContentPlaceHolder1.Page.GetType();
MethodInfo mi = t.GetMethod("SendSessionVariables" , BindingFlags.Instance | BindingFlags.NonPublic);  // Add BindingFlags.Instance | BindingFlags.NonPublic to access private method.
object[] os = new object[2]; 
os[0] = "";
os[1] = "";
mi.Invoke(this.ContentPlaceHolder1.Page, os); 

答案 3 :(得分:0)

SendSessionVariables

中设置public

答案 4 :(得分:0)

您需要检查Master - Content页面之间的通信是如何在ASP.Net中完成的。 查看这些链接

http://www.codeproject.com/KB/aspnet/MasterContentInteraction.aspx

http://www.asp.net/web-forms/videos/how-do-i/how-do-i-handle-events-in-master-and-content-pages