2016-03-04 49 views
1

我有一個MVC控制器,我定義這個Route屬性來從URLMVC路由屬性未按預期

[Route("Base/SingleOffer/{idOffer?}")] 
public ActionResult SingleOffer(int? idOffer) { 
    ... 
    return View(); 
} 

當我使用以下網址View被正確地渲染的可選屬性:

/鹼/ SingleOffer

/鹼/ SingleOffer?idOffer = 5

未找到

-

但是使用這個URL

/鹼/ SingleOffer/5

具體的錯誤是

HTTP錯誤404.0當我得到一個錯誤您正在查找的資源已被刪除,名稱已更改或暫時不可用。

錯誤在哪裏?

回答

2

它爲我工作的方式是重命名RoutConfig.cs什麼是屬性的可選參數,所以你的情況的網址是:url: "{controller}/{action}/{idOffer}"

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

或者:

routes.MapMvcAttributeRoutes();添加到您的RouteConfig.cs,您可以使用屬性路由,並且所有路徑都可以工作(確保沒有routes.MapRoute();,因爲您想使用屬性路由!)例如

Base/SingleOffer   //idOffer would null 
Base/SingleOffer?idOffer=5 //idOffer would be 5 
Base/SingleOffer/5   //idOffer would be 5 
+0

這樣它的工作原理,但我更願意用'Route'屬性上的單個'ActionView' – Naigel

+0

@Naigel看到我的編輯 – Zaki

+0

謝謝你,現在的工作!我一直在WebApi2控制器中使用它,現在我在WebApiConfig.cs中看到有'config.MapHttpAttributeRoutes();',我猜這相當於在MVC中啓用'Route'屬性 – Naigel