我正在尝试将母版页上的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" %>
任何人都能从中得知问题是什么?谢谢你的帮助,
马文
答案 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
等等