2013-01-08 64 views
1

在我的Web應用程序,我會像一個路線:我可以在MVC中有這樣的靜態路由嗎?

http://server/requests/info/{id}-{guidPart} (a string) 

所以我認爲Id是聰明,做一個路線,所以我做:

routes.MapRoute(
    name: "Info", 
    url: "{controller}/{action}/{id}-{guidPart}", 
       defaults: new { controller = "Requests", action = "Info", id = 0, guidPart = "" } 
); 

後來我想,爲什麼我需要指定默認值,爲什麼不能擁有一切,除了固定的最後部分:

routes.MapRoute(
    name: "Info", 
    url: "requests/info/{id}-{guidPart}" 
); 

但是,當我去像一個網址:

http://server/requests/info/123-abc123 

它失敗,並說:找不到

404資源。

關於我在做什麼的錯誤提示?

回答

1

您可以有一個靜態路由,但您仍然必須指定默認路由到哪個Controller和Action。

routes.MapRoute(
name: "Info", 
url: "requests/info/{id}-{guidPart}", 
defaults: new { controller = "Requests", action = "Info", id = 0, guidPart = ""}); 

本及以上的默認值之間的差異是,這UriTemplate只會嘗試匹配一個開放的開始「的請求/信息/」

+0

無論哪種方式,如果沒有匹配的控制器/行動,它會返回一個404 – Matt

+0

謝謝,所以這意味着如果我在'url'中指定了固定值,那麼它對性能會更好,這就是產生這種可能性的主要原因嗎? – sprocket12

+0

初始模板是默認的UriTemplate,它可以靈活地處理任何控制器/操作組合。我不認爲這裏的表現是一個問題。 – Matt

相關問題