C# 执行错误的代码隐藏文件?
我试图在VisualBasic中运行非常简单的代码,但我从其他页面得到了错误的标签文本 这是页面。为了清晰起见,我做了一个屏幕截图: 例如,当我单击运动时,一个userControl事件名称“LinkClicked2”应该触发并由事件处理程序处理,结果显示文本“click Detected” 但是我得到的是页面的标签文本“MenuHost.aspx” EventForUserControl.aspx: 现在,它显示MenuHost页面的代码隐藏文件:C# 执行错误的代码隐藏文件?,c#,asp.net,C#,Asp.net,我试图在VisualBasic中运行非常简单的代码,但我从其他页面得到了错误的标签文本 这是页面。为了清晰起见,我做了一个屏幕截图: 例如,当我单击运动时,一个userControl事件名称“LinkClicked2”应该触发并由事件处理程序处理,结果显示文本“click Detected” 但是我得到的是页面的标签文本“MenuHost.aspx” EventForUserControl.aspx: 现在,它显示MenuHost页面的代码隐藏文件: using System; using
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Demo_UserControl_MenuHost : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Params["Product"] != null)
{
this.lblSelection.Text = "You Selected:";
this.lblSelection.Text += this.Request.Params["Product"];
}
}
}
“LinkMenu.ascx”页面:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="LinkMenu.ascx.cs" Inherits="Demo_UserControl_LinkMenu" %>
<div>
Products:<br />
<asp:HyperLink id="lnkBooks" runat="server"
NavigateUrl="MenuHost.aspx?product=Books"> Books
</asp:HyperLink> <br />
<asp:HyperLink id="lnkToys" runat="server"
NavigateUrl="MenuHost.aspx?product=Toys"> Toys
</asp:HyperLink> <br />
<asp:HyperLink id="lnkSports" runat="server"
NavigateUrl="MenuHost.aspx?product=Sports"> Sports
</asp:HyperLink> <br />
<asp:HyperLink id="lnkFurniture" runat="server"
NavigateUrl="MenuHost.aspx?product=Furniture"> Furniture
</asp:HyperLink>
</div>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Demo_UserControl_LinkMenu : System.Web.UI.UserControl
{
public event EventHandler LinkClicked2;
protected void link_Click(object sender, EventArgs e)
{
if (this.LinkClicked2 != null)
{
LinkClicked2(this,EventArgs.Empty);
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
}
MenuHost的codeBehind中没有LinkMenu.ascx用户控件事件的事件处理程序
我的问题是,为什么我的用户控制事件由“MenuHost”页面而不是“EventForUserControl”页面处理?根据您的代码,当您单击LinkMenu.ascx中的
lnkSports
时,您将重定向到MenuHost.aspx?product=Sports
。不是吗?此外,每当您在usercontrol上执行某个事件时,它的代码隐藏将有机会处理它。但是我为usercontrol创建了一个事件,因此如果有人单击它,它将引发并由EventForUserControl.aspx上的eventHandler处理。它在逻辑上应该被另一页忽略。除此之外,它不会指向另一个页面,它显示了一个MenuHost页面标签的文本。也许我的逻辑是错误的
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="LinkMenu.ascx.cs" Inherits="Demo_UserControl_LinkMenu" %>
<div>
Products:<br />
<asp:HyperLink id="lnkBooks" runat="server"
NavigateUrl="MenuHost.aspx?product=Books"> Books
</asp:HyperLink> <br />
<asp:HyperLink id="lnkToys" runat="server"
NavigateUrl="MenuHost.aspx?product=Toys"> Toys
</asp:HyperLink> <br />
<asp:HyperLink id="lnkSports" runat="server"
NavigateUrl="MenuHost.aspx?product=Sports"> Sports
</asp:HyperLink> <br />
<asp:HyperLink id="lnkFurniture" runat="server"
NavigateUrl="MenuHost.aspx?product=Furniture"> Furniture
</asp:HyperLink>
</div>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Demo_UserControl_LinkMenu : System.Web.UI.UserControl
{
public event EventHandler LinkClicked2;
protected void link_Click(object sender, EventArgs e)
{
if (this.LinkClicked2 != null)
{
LinkClicked2(this,EventArgs.Empty);
}
}
protected void Page_Load(object sender, EventArgs e)
{
}
}