ASP.net c#page_load两次开火?

时间:2010-08-09 14:19:34

标签: c# asp.net

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";
}   

在页面上:

<%@ 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>

调试标签拒绝改变它的值,我希望它显示“WORKING”作为文本,我做错了什么?

更新

尝试构建时,我遇到3个错误:

  

错误1输入'****** ._ Default'已定义一个名为'Page_Load'的成员,其参数类型相同\ Default.aspx.cs 12 24

x3但在不同的页面上

4 个答案:

答案 0 :(得分:3)

编辑:

好的,你去吧。您有一个Default.aspx页面,Admin-Page最有可能从中复制。

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

因此,如果您需要此Default-Page中的某些基本函数,则需要从此页面继承。然后改变它:

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

如果不是这样的话......(假设页面的类被调用为它的文件......)

<%@ 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正在使用输出参数返回已解析的整数。

答案 1 :(得分:0)

在代码上放置一个调试器,你会发现代码永远不会到达“debugLabel.Text =”WORKING“; “由于在它之前发生了一些异常,代码行。你将文本分配给标签的方式绝对没有问题

答案 2 :(得分:0)

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";

答案 3 :(得分:0)

这一行:

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

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