我愿意承认我是一个完整的.NET新手,但我在经典ASP方面有丰富的经验,因为.net的整体结构完全不同,这使得这非常棘手。
我知道我打算使用代码,但是现在我很高兴将它嵌入到页面中,因为:
因此,我忘记了代码的缺失,在这个页面上,我试图获取查询字符串“mid”(菜单ID)返回的ID,然后为我们当前所在的菜单按钮显示不同的CSS类。两个菜单类,navButton和navButtonO(over)。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="admin.aspx.cs" Inherits="AlphaPack._Default"
title="Administration"
%>
<script language="C#" runat="server" >
protected int menuID;
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;
}
}
</script>
<!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>
<div class="topMenu">
<div class="navButton<%if(menuID == 0){ response.write("O") }%>">
<a href="admin.aspx" class="navLink">Admin Home</a>
</div>
<div class="navButton<%if(menuID == 1){ response.write("O") }%>">
<a href="users.aspx" class="navLink">User Manager</a>
</div>
<div class="navButton<%if(menuID == 2){ response.write("O") }%>">
<a href="products.aspx" class="navLink">Products</a>
</div>
</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
</body>
</html>
感谢您的帮助,不要扯下任何拳头。
答案 0 :(得分:4)
您应该将代码放在页面后面的代码中,即使它很简单,也无法将其保留在标记页面中。其次你仍在思考经典的asp并使用Response.Write。几乎没有理由使用Response.Write,如果你在标记页面中使用它,那么你几乎总是做错了。将您的div转换为Panel控件,它将呈现为div。然后使用一个简单的switch语句在代码隐藏页面中设置CssClass属性。您正在使用int.Parse
只有在保证从解析文本中获得int时才应使用此{{1}}。如果它不解析它会抛出异常,请使用int.TryParse。
答案 1 :(得分:3)
将midID
提升为类变量。
protected int menuID;
protected void Page_Load(object sender, EventArgs e)
{
menuID = 0;
// Check the user is allowed here
if (!Roles.IsUserInRole("Admin"))
{
Response.Redirect("../default.aspx");
}
// Get the menu ID
menuID = int.Parse(Page.Request.QueryString["mid"]);
}
答案 2 :(得分:0)
int menuId = 0;
应该是:
public int MenuId{get;set;}