2013-12-08 58 views
1

我對Url.Encode方法有點麻煩。ASP.NET Url encode - url action>不會轉到正確的控制器?

我想用這個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 

你可以看到它仍然放在這/帳戶/盈方。我如何解決這個問題?

回答

1

Url.Encode()的要點是編碼一個字符串,以便它可以插入URL中,而不必將字符串中的任何特殊字符視爲URL字符。

這和你想要的完全相反。

+0

所以我不應該編碼呢?我猜我被我們的理論幻燈片弄糊塗了。不便之處,敬請原諒。 – Mathieu

+0

@Mathieu:無論何時將數據連接成結構化語言,都需要進行編碼。在這裏,你需要HTML編碼。然而,剃刀爲你做。 – SLaks

+0

好的。非常感謝!我會更多地關注它。 – Mathieu

0

嘗試使用RouteOptions:

@ Url.Action( 「指數」,新{控制器= 「家」})