【问题标题】:Routing through 'a' tag in MVC Razor View在 MVC Razor 视图中通过“a”标签进行路由
【发布时间】:2013-07-26 10:41:16
【问题描述】:

我在带有“a”标签的 MVC 应用程序中遇到重定向问题。这是我在页面中使用的代码

<li><a href="/infra/#tabs-0" class="cbp-tm-icon-1 menu-anchor-Style">Library</a></li>
<li><a href="/infra/#tabs-1" class="cbp-tm-icon-2 menu-anchor-Style">Computer Lab</a></li>
<li><a href="/infra/#tabs-2" class="cbp-tm-icon-3 menu-anchor-Style">Language Lab</a></li>
<li><a href="/infra/#tabs-3" class="cbp-tm-icon-4 menu-anchor-Style">Science Lab</a></li>
<li><a href="/infra/#tabs-4" class="cbp-tm-icon-5 menu-anchor-Style ">Sports, Social & Cultural</a></li>

这里的 '/infra' 是我的自定义路由和 'tabs-0,tab-1,...' 都用于在同一页面中进行一些 UI 更改。在这里,我的问题是第一次选择“计算机实验室”之类的项目时,它将重定向到同一页面,如果我从同一页面本身选择另一个菜单项,则它不会重定向。仍在同一页面,但我可以看到更改 URL,但无法重定向

【问题讨论】:

  • 不要使用#标签,它有特殊含义。是Fragment identifier
  • 那么你要重定向还是不重定向?您说 tabs-0 用于 UI 更改,同时抱怨它没有进行重定向。
  • Stijn : 我实际上想重定向到自定义“infra”路由。#tabs-0 用于滚动我页面中的特定位置

标签: c# asp.net asp.net-mvc routing


【解决方案1】:

这是浏览器行为。如果您有# 登录网址并且网址是当前页面,则它不会重定向。如果你想调用控制器然后删除# 符号。

【讨论】:

    【解决方案2】:

    在MVC中你需要按如下方式使用href链接。

    href=<%:Url.Action("infra","tabs-0") %>
    

    试试这个。

    【讨论】:

      【解决方案3】:

      “#”字符是一个特殊字符,用于重定向到页面中的锚点。不要在您的情况下使用它,因为您想重定向到另一个页面,而不是滚动到页面中的特定位置。

      在您的情况下,带有主题标签的 URL 是正确的,因为它是由浏览器在客户端处理的。

      【讨论】:

      • 对不起:我实际上想重定向到自定义“基础设施”路线..而且#tabs-0 用于滚动我页面中的特定位置
      【解决方案4】:

      试试这个

      <li id="liTask" style="display: block;"><a href="" id="TaskUrl" ></a></li>
      
       $('#TaskUrl').attr('href', '/infra/tabs-0');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-04
        • 2020-10-27
        • 1970-01-01
        • 2011-10-09
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 2023-01-03
        相关资源
        最近更新 更多