2012-10-17 88 views
1

我VisitsController:MVC4控制器/路由不工作

public ActionResult Index(Visits visits, int? id) 
{ 
    .... 
    return View(v); 
} 

,這裏是我的路由配置

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

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


Works: http://localhost:49225/Visits 
Does not work: http://localhost:49225/Visits/123 

什麼將自定義路線(和強迫它是一個整數)?

+1

對於http:// localhost:49225/Visits/123,您需要創建一個新路由,或使用http:// localhost:49225/Visits/Index/123 –

+0

您是否嘗試使用http:// localhost: 49225 /訪問/索引/ 123? –

+0

@Husein是的,它的工作原理,thx,但我想localhost:49225/Visits/123工作。 – ginalster

回答

1

你需要添加一個新的工作路線。

目前,這將工作:

/Visits/Index/123 

我相信你需要添加以下內容:

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

這是假設你有訪問已經是ModelBinder的。

+0

Thx!我添加了約束並刪除了可選參數。對其他人來說,至少在這種情況下,這必須在默認路線之前。 routes.MapRoute( 名: 「VisitsForDate」, URL: 「訪問/(編號)」, 的默認值:新{控制器= 「訪問」,動作= 「索引」}, 約束:新{ID = @ 「\ d +」} ); – ginalster

+0

正確!總是從最具體到最一般的順序排列你的路由,因爲路由引擎會嘗試按順序匹配所有路由。很高興我能幫上忙。 – ItsJason