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";
}
<%@ 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但
编辑不同的网页:
确定这里你去。您有一个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
正在返回带有输出参数的分析整数。
感谢您的答案,但仍然没有显示标签 – 2010-08-09 14:25:42
即使在不成功'menuID'将是0.因此,如果OP在这种情况下不执行任何其他操作,则根本不需要“if” – abatishchev 2010-08-09 14:45:55
删除角色行将不会执行任何操作,它仍不会显示标签。标签呈现为空的,但我确实有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的公共类?这是一个非常不寻常的惯例。也许这个页面继承的代码隐藏引用或类名是不正确的。
这是自动生成我认为当我创建页面,但我可能复制+粘贴另一个页面,使其成为一个 – 2010-08-09 15:31:14
尝试重命名将admin.aspx.cs文件中的public partial class改为unique。然后更新Inherits-“”参数给新的类名,我打赌至少这个页面会消失从编译错误列表中删除。它可能会或可能不会解决您的双重回发问题。 – Jeremy 2010-08-09 15:43:07
和在后面的代码: 公共部分类Admin_Default_UNIQUE: System.Web.UI.Page { – Jeremy 2010-08-09 15:44:29
推测,当你调试时,你可以看到标签文本分配线正在被击中? – Tobiasopdenbrouw 2010-08-09 14:23:15
我会说debugLabel.Text这行=“WORKING”永远不会被击中。 – 2010-08-09 14:25:04
Bah,我从远程服务器打开visual studio中的文件,调试不让我有权限或 – 2010-08-09 14:26:40