繁体   English   中英

ASP.net C#基本问题

[英]ASP.net c# basic question

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

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

  1. 每个页面都会很简单,所以不会有太多混淆
  2. 以“正确”的方式完成所有工作可能需要太多步骤,随着我逐渐掌握.net,我宁愿慢慢地步入正轨。

因此,请原谅我缺乏代码,在此页面上,我试图获取由查询字符串“ mid”(菜单ID)返回的ID,然后为我们当前使用的菜单按钮显示不同的CSS类。 两个菜单类navButton和navButtonO(在上方)。

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

感谢您的帮助,不要再费力。

您确实应该将代码放在页面后面的代码中,即使很简单,也无法将其保留在标记页面中。 其次,您仍在考虑经典的ASP,并使用Response.Write。 几乎没有理由使用Response.Write,如果您在标记页面中使用它,那么您几乎总是在做错事情。 将div转换为Panel控件,将其呈现为div。 然后,使用简单的switch语句在页面后面的代码中设置CssClass属性。 您正在使用int.Parse ,只有在保证可以从解析文本中获得int的情况下才应使用此方法。 如果不解析,将引发异常,请改用int.TryParse。

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"]);
}     
int menuId = 0;

应该:

public int MenuId{get;set;}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM