2011-08-23 133 views
1

因爲這個原因,我對MVC正面有點困惑,我有以下默認路由定義;路由和Url助手混淆

routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults 
    ); 

當我使用URL幫手,即

@Url.Action("MyAction") 

它生成此URL;

/?action=MyAction&controller=MyController 

並且從未找到我的操作方法。傭工如何生成Url,我該如何糾正?

回答

1

只要使用過載指定動作和控制器:

@Url.Action("MyAction", "MyController")

如果您使用過載,其只需要操作名稱,控制器從當前路由數據拍攝。默認路由不會進入它。

@Url.Action("MyAction")

相當於

@Url.Action("MyAction", (string)ViewContext.RouteData.Values["controller"])

+0

指定控制器仍然導致相同的網址,'/?action =&controller =' – MaRk

+0

P.S只檢查了MSDN庫Url.Action()和它的評論;該方法返回的URL具有如下的格式; \首頁\關於 – MaRk

+0

@JEZ有一些奇怪的事情發生在那裏,它應該以文檔格式生成地址,而不是像你在代碼中那樣查詢字符串。我從來沒有來過這個問題,不幸的是沒有想法,儘管我懷疑你的問題在別處。你能用一個非常簡單的例子重新創建這個問題併發布完整的代碼嗎? – fearofawhackplanet

0

我有同樣的問題,我有始建使用WebForms和慢慢遷移部分MVC web應用程序,以支持我有一個路線條目,最終打破路由評估代碼,並導致有趣的行動網址

this blog post固定我的問題