主页面上的链接按钮与内容页面上的单击事件堆栈溢出异常

时间:2015-06-01 17:46:57

标签: c# asp.net master-pages

我正在尝试将母版页上的asp链接按钮连接到内容页面上的click事件。我按照各种在线帖子的描述,但是当我尝试运行页面时,我在链接按钮属性的get {} set {}部分得到了一个Stack-overflow异常。我找不到其他人有这个问题,主要是因为我不知道实际问题是什么。以下是我的一些代码:

母版页:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="mySite.master.cs" Inherits="mySite1.mySite" %>

<asp:LinkButton id="myLink" Text="Home" runat="server"/>

Master Page CS:

    public LinkButton myLink
    {
        get
        {
            return myLink; //FAILS HERE IF I COMMENT OUT THE SET.
        }
        set
        {
            myLink = value; //THIS IS WHERE IT FAILS!
        }
    }

Index.aspx.cs:

    protected void Page_Init(object sender, EventArgs e)
    {
        if(Master.myLink != null)
            Master.myLink.Click += new EventHandler(MainTabBtn_Click);
    }

    protected void MainTabBtn_Click(object sender, EventArgs e)
    {
           //DO STUFF
     }

的Index.aspx:

<%@ Page Title="MySite" Language="C#" MasterPageFile="~/MySite.Master" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="MySite1.Index" %>

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

任何人都能从中得知问题是什么?谢谢你的帮助,

马文

3 个答案:

答案 0 :(得分:1)

您可以为myLink属性指定一个值,该属性将其分配给myLink属性(myLink = value),该属性将其分配给myLink属性...在无限循环中 - 经典stack overflow exception。而是Find the control on the master page

答案 1 :(得分:0)

你试过这个吗?

protected void Page_Init(object sender, EventArgs e)
{
   LinkButton myLink = (LinkButton)Master.FindControl("myLink");
   myLink.Click += new EventHandler(MainTabBtn_Click);
}

答案 2 :(得分:0)

你应该改变

public LinkButton myLink

public LinkButton MyLink

更改它所包含的属性名称或内部变量,其中任何一个都没问题,因为您将调用属性myLink的其他方式,即值为myLink,该值为是myLink等等