Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 执行错误的代码隐藏文件?_C#_Asp.net - Fatal编程技术网

C# 执行错误的代码隐藏文件?

C# 执行错误的代码隐藏文件?,c#,asp.net,C#,Asp.net,我试图在VisualBasic中运行非常简单的代码,但我从其他页面得到了错误的标签文本 这是页面。为了清晰起见,我做了一个屏幕截图: 例如,当我单击运动时,一个userControl事件名称“LinkClicked2”应该触发并由事件处理程序处理,结果显示文本“click Detected” 但是我得到的是页面的标签文本“MenuHost.aspx” EventForUserControl.aspx: 现在,它显示MenuHost页面的代码隐藏文件: using System; using

我试图在VisualBasic中运行非常简单的代码,但我从其他页面得到了错误的标签文本

这是页面。为了清晰起见,我做了一个屏幕截图:

例如,当我单击运动时,一个userControl事件名称“LinkClicked2”应该触发并由事件处理程序处理,结果显示文本“click Detected”

但是我得到的是页面的标签文本“MenuHost.aspx”

EventForUserControl.aspx:

现在,它显示MenuHost页面的代码隐藏文件:

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)
{

}
}