ASP.net c#page_load发射两次?

问题描述:

protected void Page_Load(object sender, EventArgs e) 
{ 
    string menuIDdata = Page.Request.QueryString["mid"]; 
    menuID = 0; 

    // Check the user is allowed here 
    if (!Roles.IsUserInRole("Admin")) 
    { 
     Response.Redirect("../default.aspx"); 
    } 

    // Get the menu ID 
    if (int.TryParse(menuIDdata, out menuID)) 
    { 
     menuID = int.Parse(menuIDdata); 
    } 
    else 
    { 
     menuID = 0; 
    } 

    debugLabel.Text = "WORKING"; 

    var selectedMenu = this.Page.FindControl("mnu" + menuID) as Panel; 
    selectedMenu.CssClass = "navButtonO"; 
} 

在页面上:ASP.net c#page_load发射两次?

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="admin.aspx.cs" Inherits="*******._Default" title="Administration" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
    <head id="mainHead" runat="server" > 
     <title>Administration</title> 
     <link rel="Stylesheet" href="../style/admin.css" />  
    </head> 
    <body> 

    <form id="mainForm" runat="server"> 

    <div class="topMenu">   
     <asp:Panel id="mnu0" runat="server" class="navButton"> 
      <a href="admin.aspx" class="navLink">Admin Home</a> 
     </asp:Panel> 

     <asp:Panel id="mnu1" runat="server" class="navButton"> 
      <a href="admin.aspx" class="navLink">User Manager</a> 
     </asp:Panel> 

     <asp:Panel id="mnu2" runat="server" class="navButton"> 
      <a href="admin.aspx" class="navLink">Products</a> 
     </asp:Panel>    
    </div>       
    <br /><br /> 
    <div class="subMenu"> 
     <a href="products.aspx" class="subLink">Products</a> <a href="productCats.aspx" class="subLink">Categories</a> 
    </div> 
    <br /><br /> 
    Welcome to the Admin 
    <br /><br />   
    <asp:label id="debugLabel" runat="server" /> 

    </form> 
    </body> 
</html> 

调试标签拒绝改变它的价值,我期待它显示的“工作”,因为它的文字,我究竟做错了什么?

更新:

当试图建立我得到3个错误:

Error 1 Type '******._Default' already defines a member called 'Page_Load' with the same parameter types\Default.aspx.cs 12 24

X3但

+1

推测,当你调试时,你可以看到标签文本分配线正在被击中? – Tobiasopdenbrouw 2010-08-09 14:23:15

+0

我会说debugLabel.Text这行=“WORKING”永远不会被击中。 – 2010-08-09 14:25:04

+0

Bah,我从远程服务器打开visual studio中的文件,调试不让我有权限或 – 2010-08-09 14:26:40

编辑不同的网页:

确定这里你去。您有一个Default.aspx页面,Admin-Page最可能是从该页面复制而来的。

public partial class _Default : System.Web.UI.Page 

所以,如果你需要这个默认页面的一些基本功能,你需要继承这个页面。然后改变这样的:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="admin.aspx.cs" Inherits="_Default" title="Administration" %> 

如果不是这样......(Asuming该类页面被称为像它的文件......)

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="admin.aspx.cs" Inherits="Admin" title="Administration" %> 

变化您的代码...

// Get the menu ID 
if (!int.TryParse(menuIDdata, out menuID)) 
{ 
    menuID = 0; 
} 

由于TryParse正在返回带有输出参数的分析整数。

+0

感谢您的答案,但仍然没有显示标签 – 2010-08-09 14:25:42

+1

即使在不成功'menuID'将是0.因此,如果OP在这种情况下不执行任何其他操作,则根本不需要“if” – abatishchev 2010-08-09 14:45:55

+0

删除角色行将不会执行任何操作,它仍不会显示标签。标签呈现为空的,但我确实有3个错误(请参阅编辑问题),可以阻止它运行吗? – 2010-08-09 14:59:04

将一个调试器放在代码上,您会看到代码从未到达“debugLabel.Text =”WORKING“; ”代码行,因为之前发生了一些异常。但绝对与方式没有问题,要指定文本标记

try 
{ 
string menuIDdata = Page.Request.QueryString["mid"]; 
menuID = 0; 

// Check the user is allowed here 
if (!Roles.IsUserInRole("Admin")) Then 
{ 
    Response.Redirect("../default.aspx"); 
} 

// Get the menu ID 
if (int.TryParse(menuIDdata, out menuID)) 
{ 
    menuID = int.Parse(menuIDdata); 
} 
else 
{ 
    menuID = 0; 
} 
} 
catch { } 
debugLabel.Text = "WORKING"; 

var selectedMenu = this.Page.FindControl("mnu" + menuID) as Panel; 
selectedMenu.CssClass = "navButtonO"; 

这条线:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="admin.aspx.cs" Inherits="*******._Default" title="Administration" %> 

混淆了我。你有一个名为admin.aspx.cs的文件,其中有一个名为******* ._ Default的公共类?这是一个非常不寻常的惯例。也许这个页面继承的代码隐藏引用或类名是不正确的。

+0

这是自动生成我认为当我创建页面,但我可能复制+粘贴另一个页面,使其成为一个 – 2010-08-09 15:31:14

+0

尝试重命名将admin.aspx.cs文件中的public partial class改为unique。然后更新Inherits-“”参数给新的类名,我打赌至少这个页面会消失从编译错误列表中删除。它可能会或可能不会解决您的双重回发问题。 – Jeremy 2010-08-09 15:43:07

+0

和在后面的代码: 公共部分类Admin_Default_UNIQUE: System.Web.UI.Page { – Jeremy 2010-08-09 15:44:29