2014-07-16 1 views
1

약간의 문제가 있습니다. 라우팅 구성이 있다고 가정합니다.ASP.NET MVC5 - 순차적 ID 라우팅 문제 : ID가 1 자 이상인 경우 404 오류가 발생합니까?

상황

내가 엔티티에 연결된 직원을 나열하는 페이지를 가지고 : 다음은 내 상황입니다. 엔티티 페이지에서 새 직원을 추가 할 수 있습니다. 일단 직원이 추가되면 클릭하여 직원에 대한 심층적 인 정보를 얻을 수 있습니다.

작성 및 추가 정보가 정상적으로 작동하면 직원이 생성되고 ID가 정상적으로 증가합니다.

문제 직원이 작성 (ASP.NET 그래서 천 또는에 대한 ID를 이동하기로 결정 때 중 10 명의 직원에서 발생하거나하는) 세부에보기 1 개 문자를 통해 ID를 할당

특정 직원이 404이고 단순히 표시합니다 :

"찾고있는 리소스가 제거되었거나 이름이 변경되었거나 일시적으로 사용할 수 없습니다."

0-9 사이의 ID는 문제없이 작동하지만 ID가 1 자 (예 : 10) 이상이되면 문제가 발생합니다.

RouteConfig.cs

  routes.MapRoute(
      "EmployeeDetails", 
      "{controller}/{id}-{Title}/{action}/{eid}", 
      new { controller = "Farm", action = "EmployeeDetails", id = UrlParameter.Optional, title = UrlParameter.Optional, eid = UrlParameter.Optional}, 
      new { id = @"\d+", eid = @"\d" } 
     ); 

FarmsController.cs

 public ActionResult Employee(int id = -1, int eid = -1) 
     { 

     if(id == -1 || eid == -1){ 
      RedirectToAction("Index","Home"); 
     } 
     Farm f = db.Farms.Find(id); 
     ViewBag.FarmName = f.Name; 
     ViewBag.FarmUrl = f.getLink(true); 
     Worker w = db.Workers.Find(eid); 
     w.TimeSheets = w.TimeSheets.OrderByDescending(m => m.TimeSheetID).ToList(); 

     return View(w); 
    } 

어떤 도움 고급 감사드립니다, 사과 나는 모든 관련 정보를 제공하지 않은 경우. 처음으로 포스터를 보내 주시면 다른 것을 알 필요가 있는지 알려드립니다.

건배

답변

0

제약 조건은 다음과 같이해야한다 :

new { id = @"\d+", eid = @"\d+" } 

현재 당신은 단지 하나의 기호를

+0

완벽한 의미 이드 필드에 대한 정규식 \ d 개를 사용하는, 고마워요! 그것은 효과가 있었다. 건배 –