【问题标题】:mvc page navigation. How I solve this?mvc 页面导航。我如何解决这个问题?
【发布时间】:2013-02-22 16:53:50
【问题描述】:

我在隐藏的 ASp.NET Web 表单代码中使用了以下代码。它在我所在页面的 URL 中传递参数,以便我制作 HTML 并添加 ON CLASS 以显示我所在的页面。现在

我如何在 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>";
                }
            }
        }

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    在此处查看我的question,以及相应的answer。我在 3 个不同的 MVC 项目中使用了这个解决方案。

    【讨论】:

      【解决方案2】:

      你可以像这样使用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>
      

      【讨论】:

      • 感谢您的回复。我不需要只添加类,而是需要用
      • 如果您有任何获取变量或者您正在查看控制器中的记录,例如/products/about/1,这不会失败
      猜你喜欢
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-14
      • 2020-03-25
      • 2020-02-14
      相关资源
      最近更新 更多