2010-11-08 80 views
0

我在下面的代码中使用了ASp.NET Web窗体代码。它的URL传递参数在哪个页面上,以便我制作HTML并添加ON CLASS来显示我所在的页面。现在mvc页面导航。我如何解决这个问题?

我如何在MVC中解决这个问题?任何干净的方法。

protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!(Page.IsPostBack)) 
      { 
       string Load; 
       Load = ""; 
       string pagename = Request.Path.Substring(Request.Path.LastIndexOf("http://www.example.com/") + 2); 
       if (!(Request.QueryString["Nav"] == null)) 
       { 
        if (Request.QueryString.Get("Nav") == "Home") 
        { 
         Load = "<div class='menu-image'><img src='images/on-left.gif' alt='' /></div><div class='on'><a href='default.aspx?Nav=Home' class='over'>Home</a></div><div class='menu-image'><img src='images/on-right.gif' alt='' /></div>"; 
         Navigate.InnerHtml = Load + "<a href='aboutus.aspx?Nav=About'>About Us</a><a href='contactus.aspx?Nav=Contact'>Contact Us</a>"; 
        } 
        else if (Request.QueryString.Get("Nav") == "About") 
        { 
         Load = "<div class='menu-image'><img src='images/on-left.gif' alt='' /></div><div class='on'><a href='aboutus.aspx?Nav=About' class='over'>About Us</a></div><div class='menu-image'><img src='images/on-right.gif' alt='' /></div>"; 
         Navigate.InnerHtml = "<a href='default.aspx?Nav=Home' >Home</a>" + Load + "<a href='contactus.aspx?Nav=Contact'>Contact Us</a>"; 
        } 
        else if (Request.QueryString.Get("Nav") == "Contact") 
        { 
         Load = "<div class='menu-image'><img src='images/on-left.gif' alt='' /></div><div class='on'><a href='contactus.aspx?Nav=Contact' class='over'>Contact Us</a></div><div class='menu-image'><img src='images/on-right.gif' alt='' /></div>"; 
         Navigate.InnerHtml = "<a href='default.aspx?Nav=Home' >Home</a><a href='aboutus.aspx?Nav=About' >About Us</a>" + Load; 
        } 
       } 
       else if (pagename == "default.aspx") 
       { 
        Load = "<div class='menu-image'><img src='images/on-left.gif' alt='' /></div><div class='on'><a href='default.aspx?Nav=Home' class='over'>Home</a></div><div class='menu-image'><img src='images/on-right.gif' alt='' /></div>"; 
        Navigate.InnerHtml = Load + "<a href='aboutus.aspx?Nav=About'>About Us</a><a href='contactus.aspx?Nav=Contact'>Contact Us</a>"; 
       } 
       else 
       { 
        Navigate.InnerHtml = "<a href='default.aspx?Nav=Home'>Home</a><a href='aboutus.aspx?Nav=About'>About Us</a><a href='contactus.aspx?Nav=Contact'>Contact Us</a>"; 
       } 
      } 
     } 

回答

0

看看我question这里,和适当的answer。我在3个不同的MVC项目中使用了这个解决方案。

0

您可以使用JavaScript这样的:

<script type="text/javascript"> 
    $(document).ready(function() { 
     var path = location.pathname; 
     var home = "/"; 
     $(".menu a[href='" + [path || home] + "']").addClass("active"); 
    }); 
</script> 

而这通常会是您的菜单:

<ul> 
    <li><a href="/Home">Item 1</a></li> 
    <li><a href="/Help">Item 2</a></li>  
    <li><a href="/About">Item 3</a></li> 
    <li><a href="/Contact">Item 4</a></li> 
</ul> 
+0

感谢您的回复。我不需要添加类,而是我需要替换当前选定的锚点

lordali 2010-11-08 17:30:03

+0

如果您有任何获取变量或者您正在查看控制器中的记录,例如'/ products /约/ 1' – Jimmy 2010-11-08 17:52:23