ASP.net c#基本问题

时间:2010-08-09 13:24:06

标签: c# asp.net

我愿意承认我是一个完整的.NET新手,但我在经典ASP方面有丰富的经验,因为.net的整体结构完全不同,这使得这非常棘手。

我知道我打算使用代码,但是现在我很高兴将它嵌入到页面中,因为:

  1. 每个页面都很简单,所以 不会有太多混淆
  2. 这可能太过分了 我做的就是'正确'的方式 而是像我一样慢慢地走到那一步 掌握.net
  3. 因此,我忘记了代码的缺失,在这个页面上,我试图获取查询字符串“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>
    

    感谢您的帮助,不要扯下任何拳头。

3 个答案:

答案 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;}