ASP.net c#page#加载两次?

ASP.net c#page#加载两次?,c#,asp.net,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("../def

在网页上:

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

管理




欢迎来到管理员

调试标签拒绝更改它的值,我希望它以文本的形式显示“正在工作”,我做错了什么

更新:

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

错误1类型“******.\u Default”已使用相同的参数类型\Default.aspx.cs 12 24定义了名为“Page\u Load”的成员

x3但在不同的页面上编辑:

好的,给你。您有一个Default.aspx页面,管理员页面很可能是从该页面复制的

<%@ 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>
因此,如果您需要从这个默认页面继承一些基本函数,那么您需要从这个页面继承。然后像这样改变它:

public partial class _Default : System.Web.UI.Page 
因为
TryParse
正在返回带有输出参数的解析整数。

编辑:

好的,给你。您有一个Default.aspx页面,管理员页面很可能是从该页面复制的

<%@ 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>
因此,如果您需要从这个默认页面继承一些基本函数,那么您需要从这个页面继承。然后像这样改变它:

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

因为
TryParse
正在返回带有输出参数的解析整数。

在代码上放置调试器,您将看到代码从未到达“debugLabel.Text=”WORKING;
“代码行,因为在此之前发生了一些异常。将文本分配给标签的方式绝对没有问题。在代码上放置一个调试器,您将看到代码永远不会到达“debugLabel.text=”WORKING;
   // Get the menu ID 
if (!int.TryParse(menuIDdata, out menuID)) 
{ 
    menuID = 0; 
} 
“代码行,因为在此之前发生了一些异常。将文本指定给标签的方式绝对没有问题

此行:

   // Get the menu ID 
if (!int.TryParse(menuIDdata, out menuID)) 
{ 
    menuID = 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";

我很困惑。您是否有一个名为admin.aspx.cs的文件,其中有一个名为******.\u Default的公共类?这是一个非常不寻常的惯例。可能此页继承的代码隐藏引用或类名不正确。

此行:

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



我很困惑。您是否有一个名为admin.aspx.cs的文件,其中有一个名为******.\u Default的公共类?这是一个非常不寻常的惯例。可能此页继承的代码隐藏引用或类名不正确。

可能在调试时,您会看到标签文本分配行被命中?我想说,debugLabel.text=“WORKING”行从未被命中。呸,我正在从远程服务器打开visual studio中的文件,debug不允许我拥有权限或其他东西检查浏览器上的html源代码。标签呈现为span标记。menuID是否在页面类级别声明?如果您不是管理员用户,它会重定向吗?可能在调试时,您会看到标签文本分配行被点击?我会说,debugLabel.text=“WORKING”行从未被点击。呸,我正在从远程服务器打开visual studio中的文件,debug不允许我拥有权限或其他什么检查浏览器上的html源代码。标签呈现为span标记。menuID是否在页面类级别声明?如果您不是管理员用户,它会重定向吗?谢谢您的回答,但是标签仍然没有显示任何内容,即使失败
menuID
也将为0。因此,如果OP在这种情况下不执行任何附加操作,则根本不需要
if
。删除角色行没有任何作用,它仍然不会显示标签。标签呈现为空,但我确实有3个错误(请参见“编辑到”问题),这可能会停止它的运行吗?感谢您的回答,但标签仍然显示为空,即使在失败的情况下
menuID
也将为0。因此,如果OP在这种情况下不执行任何附加操作,则根本不需要
if
。删除角色行没有任何作用,它仍然不会显示标签。标签呈现为空,但我确实有3个错误(请参见“编辑到”问题),这可能会停止它的运行吗?我想这是在创建页面时自动生成的,但我可能复制并粘贴了另一个页面,以便将admin.aspx.cs文件中的公共分部类重命名为唯一的名称。然后将Inherits-“”参数更新为新的类名。我打赌至少这个页面会从编译错误列表中消失。它可能会也可能不会解决您的双重回发问题。在代码隐藏中:public partial class Admin_Default_UNIQUE:System.Web.UI.Page{感谢您的帮助,我收到错误:解析器错误消息:无法加载类型“Admin_Default_UNIQUE”。您是否也重命名了Admin.aspx.cs文件中的类名?public partial class Admin_Default_UNIQUE:System.Web.UI.Page{我想这是在创建页面时自动生成的,但我可能复制并粘贴了另一个页面,以便将admin.aspx.cs文件中的公共分部类重命名为唯一类。然后更新继承-“”参数设置为新的类名。我打赌至少这个页面会从编译错误列表中消失。它可能会也可能不会修复您的双重回发问题。在代码隐藏中:public partial class Admin\u Default\u UNIQUE:System.Web.UI.page{感谢您的帮助,我收到错误:解析器错误消息:无法加载类型“Admin\u Default\u UNIQUE”。您是否也在Admin.aspx.cs文件中重命名了类名?公共部分类Admin\u Default\u UNIQUE:System.Web.UI.Page{