2016-08-01 2 views
0

컨트롤러에 HomeController라는 이름의 컨트롤러가 있습니다.이 컨트롤러의 모든 동작과 컨트롤러의 이름을 각각 Route 및 Routeprefix로 다시 작성합니다. 이 잘 작동 액션 메소드 색인MVC URL 리디렉션 원래 이름으로 다시 쓰기

[RoutePrefix("MyPortal")] 
    public class HomeController : Controller 
    { 
     [Route("Home")] 
     public ActionResult Index() 
     { 
     } 

    [Route("Index")] 
     public ActionResult LandingPage() 
     { 
     } 
    } 

그것의 내 컨트롤러입니다,하지만 난 URL에 홈/인덱스를 입력 할 때, 그 날 내가 색인 ActionResult로 사용자를 리디렉션 할

A public action method 'index' was not found on controller 'Web.Controllers.HomeController'. /Home/index 

에러 제공 , 그가 Home/Index 또는 MyPortal/Home을 입력 한 경우

마찬가지로 Home/LandingPage 또는 MyPortal/Index를 입력하면 LandingPage로 리디렉션해야합니다.

MyPortal/Home 또는 MyPortal/Index가 정상적으로 작동합니다.

+0

왜 리디렉션을 원하십니까? 사용자가 링크가없는 경우 어떻게 '집/색인'을 직접 입력 할 수 있습니까? 리디렉션이 실제로 필요한 경우 URL 재 작성 모듈 (IIS 또는 IIS Express에서 호스팅되는 경우)을 사용할 수 있습니다. –

+0

사용자 유형 홈/색인을 가정하면이 경우 어떻게해야합니까? 홈 페이지로 리디렉션되어야합니다. –

+0

정상적인 (개발자가 아닌) 사용자는 홈/색인에 입력하지 않습니다. 대부분의 사용자는 검색 주소창을 사용하여 google.com을 입력하지 않고도 google을 검색합니다. 그래서 리디렉션에 대해 걱정할 것입니다. 할 수있는 일은 좋은 404 찾을 수 없음 페이지가 설정되었습니다. SO 및 너겟 패키지에 대해서는 여기에서 확인할 수 있습니다. –

답변

-1

어때? 하지만 마지막 사례 (MyPortal/Index)는 작동하지 않습니다.

[RoutePrefix("Home")] 
[RoutePrefix("MyPortal")] 
public class HomeController : Controller 
{ 
    [Route("Index")] 
    [Route("Home")] 
    public ActionResult Index() 
    { 
    } 
    [Route("LandingPage")] 
    public ActionResult LandingPage() 
    { 
    } 
} 
+0

이 코드를 테스트 해 보셨습니까? 리디렉션이 발생하지 않습니다. 중복 된 RoutePrefix 속성은 허용되지 않습니다. 그리고 당신은 두 가지 다른 행동에 대해 색인을 가지고 있습니다. –

+0

추측을 중지하고 실제로 anwser를 테스트하십시오. 작동하는 것을 발견했다면, 새로운 anwser를 생성하고 작동하지 않는 예제로 여기에 두십시오 :-) –

+0

아니요, 여러 개의 RoutePrefix 속성을 추가 할 수 없습니다 –