link 母版页上的按钮与内容页上的单击事件堆栈溢出异常

link button on Master Page with Click Event on Content Page Stack-overflow Exception

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

主页:

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

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

母版页 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" %>

任何人都可以从中看出问题所在吗?感谢您的帮助,

马文

您为 myLink 属性 分配了一个值,后者将其分配给 myLink 属性 (myLink = value),后者将其分配给 myLink 属性...无限循环 - 取而代之的是经典 stack overflow exception. Find the control on the master page

你试过了吗?

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

你应该改变

public LinkButton myLink

public LinkButton MyLink

更改 属性 名称或它包含的内部变量,其中任何一个都可以,因为否则您将调用 属性 myLink,该值是myLink,那个值是myLink,等等等等