2012-11-05 64 views
1

我想生成沒有控制器名稱的Url。如果我使用下面的代碼...UrlHelper.Action無控制器生成Url

@Url.Action("d", null, new { id = Model.DownloadId }) 

...我得到的URL這樣

http://localhost:814/DefaultController/d/11234 

我想獲得的URL這樣

http://localhost:814/d/11234 

我的航線代碼..

routes.MapRoute("Download result form", "d/{id}", new { controller = "Result", action = "DownloadForm" }); 

...處理類似上面的url(僅適用於Action和沒有控制器名稱的Id)。

+0

MVC假定默認控制器是您網站的根。您可以創建一個自定義路由,將主機名無控制器定義爲默認路由,或者您可以簡單地創建自己的href:href='/d/@Model.DownloadId' – Maess

+0

默認控制器在路由中描述,請檢查我的更新的答案。 – Tomas

+0

對不起,但我不明白你的第一個建議,自己創建網址在MVC世界似乎有點奇怪。它應該是soem那種使用MVC幫助程序創建URL的解決方案。 – Tomas

回答

0

這會給您帶來麻煩,因爲這些操作會與綁定到其他控制器相沖突。

爲了製作乾淨的urls就像你想要的那樣,通常會省略動作名稱,例如此頁面stackoverflow/questions/{id}

UPDATE

提供控制器的操作,以允許它知道要選擇哪條路線,即

@Url.Action("DownloadForm", "Result", new { id = Model.DownloadId }) 

如果不工作,它正被另一個途徑抓起,所以你的路線排序不是你想要的。

+0

同意。我曾假設OP正試圖喜歡任何控制器之外的資源。 – Maess

+0

我已更新我的帖子。這不會因爲我有自定義路線,請檢查我的更新答案。 – Tomas

+0

啊,更新回答 – dove