ASP.NET Url编码 - 网址操作>不去右边的控制器?

时间:2013-12-08 16:21:56

标签: asp.net-mvc razor

我对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>-->    

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

如果我在家,我以“关于”为例,我会看到这个链接:

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

但是,如果我在我的帐户控制器并希望转到同一页面,那么结果就是:

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

你可以看到它仍然提出了/ Account / infront。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

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

这与你想要的完全相反。

答案 1 :(得分:0)

尝试使用RouteOptions:

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