2015-10-14 120 views
1

我想使用路由属性来定义MVC路由。MVC5属性路由

我有在控制器下面的代码..

[Route("MDT/Detail/{id}")] 
public JsonResult Detail(int? id) 
{ 
    ITS.Models.ComputerDetail cp = GetDataFromDatabase(id.Value); 

    return Json(cp, JsonRequestBehavior.AllowGet); 
} 

如果我用这个URL(http://localhost:6481/MDT/Detail?id=1245)返回JSON数据。

但是如果我使用了(http://localhost:6481/MDT/Detail/1245),它会显示错误,说变量id是Null。

Exception Details: System.InvalidOperationException: Nullable object must have a value. 

请问我可以通过使用路由属性来实现{Controller}/{Action}/{ID}路由吗?

routes.MapMvcAttributeRoutes(); 
中的RegisterRoutes

+0

要启用属性的路由,配置过程中调用MapMvcAttributeRoutes。 –

回答

0

请尝试以下代码,它可能对你有所帮助,

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapMvcAttributeRoutes(); 

    AreaRegistration.RegisterAllAreas(); 

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

有你在加入这一行enabled属性路由?