2016-10-12 7 views
1

현재이 URL을 생성하려고합니다. "/ Cloud/Hosting/RoaringPenguin/Manage/Exclusions". 여기 Asp.Net MVC 5 사용자 지정 작업을 영역 아래 라우팅

제가 또한 시도 제가 시도

public class RoaringPenguinController : PortalControllerBase 
{ 


    public ActionResult Exclusions() 
    { 
     return View("Exclusions"); 
    } 


} 

너무

[Route("Manage/Exclusions")] 
public ActionResult Exclusions() 

처럼 작용 자체에 경로를 부가 제어부 지역 등록 여기

public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Hosting_default", 
      "Cloud/Hosting/{controller}/{action}/{id}", 
      new { action = "Index", id = UrlParameter.Optional } 
     ); 
    } 

이다 컨트롤러 자체에 몇 가지 속성을 추가합니다.

[RouteArea("Hosting")] 
[RoutePrefix("RoaringPenguin")] 
public class RoaringPenguinController : PortalControllerBase 

하지만 작동하지 않는 것 같습니다. 만약 내가 모든 속성을 남겨두면 최종 URL은 "/ Cloud/Hosting/RoaringPenguin/Exclusions"입니다. 누구든지 "관리"URL을 얻을 수있는 방법을 알고 있습니까?

그냥 내가 어떤 도움이 평가되고 RouteConfig 클래스

routes.MapMvcAttributeRoutes(); 

에서 내 RegisterRoutes 방법에서 다음 설정을 확인합니다. 감사합니다

답변

1

기본 영역 경로는 "관리/제외"부분을 허용하지 않습니다. URL을 /Cloud/Hosting/RoaringPenguin/Exclusions (경로의 부분 인 Manage 빼기)로 설정하면 정상적으로 작동합니다.

경로가 정확히 필요하면 속성 라우팅이 가장 좋습니다. 그러나 언급 된 시도는 모두 다른 것이 빠져 있습니다. 컨트롤러가 경로의 첫 번째 부분의 구도를 모두 RouteAreaRoutePrefix로 장식한다 : 그러나

[RouteArea("Hosting", AreaPrefix = "Cloud/Hosting")] 
[RoutePrefix("RoaringPenguin")] 
public class RoaringPenguinController : Controller 

를,이 분야를 처리 할 때 당신은 단지 하나의 RouteArea를 지정할 수 있도록 실제로, 기본 컨트롤러를 구현하는 전형적인이다 장소 :

[RouteArea("Hosting", AreaPrefix = "Cloud/Hosting")] 
public class HostingBaseController : Controller 

[RoutePrefix("RoaringPenguin")] 
public class RoaringPenguinController : HostingBaseController 

다음, 당신의 행동에 :

[Route("Manage/Exclusions")] 
public ActionResult Exclusions() 

당신은 없었.

+0

안녕하세요 Chris, (기본 컨트롤러없이) 첫 번째 제안을 시도했지만 404 오류가 발생했습니다. '/'애플리케이션의 서버 오류입니다. 리소스를 찾을 수 없습니다. 설명 : HTTP 404. 찾고있는 리소스 (또는 해당 종속성 중 하나)가 제거되었거나 이름이 변경되었거나 일시적으로 사용할 수없는 리소스 일 수 있습니다. 다음 URL을 검토하고 철자가 올바른지 확인하십시오. 요청한 URL :/Cloud/Hosting/RoaringPenguin/Manage/Exclusions 버전 정보 : Microsoft .NET Framework 버전 : 4.0.30319; ASP.NET 버전 : 4.6.1069.1' – tjackadams

+1

다른 작업이 있습니다. 영역이 제대로 등록되지 않았거나 속성 라우팅이 제대로 활성화되지 않았거나 다른 경로가이 영역과 충돌합니다. 게시 한 내용에 따라이 방법이 효과가 있습니다. 당신의 지역이 실제로 단지'Hosting'가 아닌'CloudHosting'과 같은 것이 옳지 않다면 코드에 필요한 수정을해야합니다. –

+0

당신이 틀렸어. 기본적으로 내 지역 등록 후 내 속성 라우팅이 호출되고있었습니다. 이것은 해결책입니다 '// 속성 라우팅 routes.MapMvcAttributeRoutes(); // 영역 등록 AreaRegistration.RegisterAllAreas(); ' 변경 한 후 초기 솔루션이 작동했습니다. 많은 감사! – tjackadams

0

[RouteArea("AreaName", AreaPrefix = "Cloud/Hosting")] 
[RoutePrefix("RoaringPenguin")] 
public class SampleController : Controller 
{ 
    [Route("Manage/Exclusions")] 
    public ActionResult Exclusions() 
    { 
     return View("Exclusions"); 
    } 
} 

또는

[RoutePrefix("Cloud/Hosting/RoaringPenguin")] 
public class RoaringPenguinController : PortalControllerBase 
{ 

    [Route("Manage/Exclusions")] 
    public ActionResult Exclusions() 
    { 
     return View("Exclusions"); 
    } 

} 

이것은 첫 번째 줄을 것이 코드를 시도

routes.MapMvcAttributeRoutes(); 

이 라인을 작성해야 만 후

AreaRegistration.RegistrationAllAreas();