2013-08-30 27 views
1

我已經在我的SPA應用程序中設置了映射。基本映射使用Web API和以下內容:如何讓ASP MVC4/Web API完全忽略路由?

routes.MapRoute(
     "spa", 
     "{section}/{id}", 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
     new { section = @"home|admin" }); 

當用戶輸入/ home/abc時,它會調用home控制器和索引方法。

我怎樣才能讓這個像部分他們以下要求

/home/abc/def 
/home/overview/123 
/home/xx/12 
/home/anything/anything 

完全被忽視?請注意,我實際上並不需要id參數,但我將它留在這裏,因爲它似乎沒有任何區別,仍然稱爲主控制器和索引方法。

+0

哪裏是網絡API?當你定義web API路線你應該寫:config.Routes.MapHttpRoute –

+0

我有其他的Web Api路由沒有顯示在這裏。全部以/ api開頭 – Alan2

+0

你能提供更多信息:爲什麼你需要忽略/ home/something/something?似乎你正面臨着其他問題,如果你能夠解釋你所需要的東西,那麼這個問題就可以解決。 –

回答

2

忽略home/acb/後使用通配符。喜歡的東西:

routes.IgnoreRoute("home/abc/{*pathinfo}"); 

這應該忽略與home/abc

+0

我需要接受/ home/abc並忽略/ home/abc/def,那麼我需要從您的建議中添加一個通配符? – Alan2

+0

起初我並不完全瞭解你的問題。我用我認爲你需要的東西更新了我的答案。 – PeaceFrog

0

也許只是將它們添加到使用IRouteConstraint

寫一個約束類,並添加約束爲ID參數被忽略

routes.IgnoreRoute(route1) 
+0

你能告訴我路線1的樣子嗎?我不確定我明白你的意思。 – Alan2

+0

你應該解釋什麼route1看起來像 –

+0

你是否需要忽略所有路由,除了特定的控制器和操作接受int ID? – syned

2

它可以採取的解決辦法..。 然後在那裏寫你自己的邏輯來檢查請求中傳遞的URL段,你可以根據你的URL返回TRUE/FALSE要求...

有意義嗎?

1

一個後/任何確保已刪除默認路由:

//routes.MapRoute(
// name: "Default", 
// url: "{controller}/{action}/{id}", 
// defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });