【问题标题】:ASP.NET Url encode - url action > Doesnt go to the right controller?ASP.NET Url 编码 - url 操作 > 没有转到正确的控制器?
【发布时间】:2013-12-08 16:21:56
【问题描述】:

Url.Encode 方法有点问题。

我正在尝试使用此 Url.encode(Url.Action(..)) 创建我的菜单。除非我想使用不同的控制器(例如从帐户控制器到我的家庭控制器),否则一切都很好。

这里是菜单

<ul>
                        <li id="Home"><a href="@Url.Encode(Url.Action("Index","Home"))">Home</a></li>
                        <li id="About"><a href="@Url.Encode(Url.Action("About","Home"))">About</a></li>
                        <li id="Tickets"><a href="@Url.Encode(Url.Action("Tickets","Home"))">Tickets</a></li>
                        <li id="Events"><a href="@Url.Encode(Url.Action("Events","Home"))">Events</a></li>
                    </ul>   
                    <!--<ul>
                        <li id="Home">@Html.ActionLink("Home", "Index", "Home")</li>
                        <li id="About">@Html.ActionLink("About", "About", "Home")</li>
                        <li id="Tickets">@Html.ActionLink("Tickets", "Tickets", "Home")</li>
                        <li id="Events">@Html.ActionLink("Events", "Events", "Home")</li>

                    </ul>-->    

comment 中的菜单是我在 Url.Encode 之前使用的菜单。

如果我在家,例如我去“关于”,我会得到这个链接:

> http://localhost:1211/%2fHome%2fAbout

但是,如果我在我的帐户控制器中并且想要转到同一页面,这就是结果:

> http://localhost:1211/Account/%2fHome%2fAbout

你可以看到它仍然在这个前面放置 /Account/。我该如何解决这个问题?

【问题讨论】:

    标签: asp.net-mvc razor


    【解决方案1】:

    Url.Encode() 的重点是对字符串进行编码,使其可以插入到 URL 中,而不会将字符串中的任何特殊字符视为 URL 字符。

    这与你想要的完全相反。

    【讨论】:

    • 所以我不应该编码这个?我猜我被我们的理论幻灯片弄糊涂了。很抱歉给您带来不便。
    • @Mathieu:每当您将数据连接成结构化语言时,您都需要进行编码。在这里,您需要进行 HTML 编码。但是,Razor 会为您做到这一点。
    • 好的。非常感谢!我会进一步研究。
    【解决方案2】:

    尝试使用 RouteOptions :

    @Url.Action("Index", new {controller = "Home"})

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      • 2018-09-15
      相关资源
      最近更新 更多