MVC 전에 MVC 5
에 라우팅 속성 5 routes.MapRoute(...)
을 호출하여 URL을 특정 작업 및 컨트롤러에 매핑 할 수 있습니다. RouteConfig.cs 파일에서. 홈 페이지의 URL이 저장됩니다 (Home/Index
). 그러나 아래와 같이 기본 경로를 수정하면
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
다른 동작 및 컨트롤러의 URL에 영향을 미칩니다. 예를 들어, 컨트롤러 클래스가 ExampleController
이고 동작 방법이 DoSomething
인 경우 기본 경로가 변경 되었기 때문에 예상 기본 URL ExampleController/DoSomething
이 더 이상 작동하지 않습니다.
이에 대한 해결 방법은 없습니다 기본 경로와 혼란 등과 같은 다른 행동과 컨트롤러에 대한 RouteConfig.cs 파일에 새 경로를 생성,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Example",
url: "hey/now",
defaults: new { controller = "Example", action = "DoSomething", id = UrlParameter.Optional }
);
이제 ExampleController
클래스의 DoSomething
행동이 뜻입니다 URL hey/now
에 매핑됩니다. 그러나이 작업은 여러 작업에 대한 경로를 정의 할 때마다 수행하기가 번거로울 수 있습니다. 그래서 MVC 5 당신이 지금과 같이 행동 MVC 4에서
public class HomeController : Controller
{
// url is now 'index/' instead of 'home/index'
[Route("index")]
public ActionResult Index()
{
return View();
}
// url is now 'create/new' instead of 'home/create'
[Route("create/new")]
public ActionResult Create()
{
return View();
}
}
를 URL과 일치하는 속성을 추가 할 수 있습니다, 이것은 당신이 그 같은 대답을 언급해야한다 App_Start/RouteConfig.cs – NikolaiDante
@NikolaiDante 수행 할 수 있습니다 나는 거의 그것을 놓치고이 대답보다 빠릅니다. :) Thanks – GazB
MVC 5. 폼 로그인이있는 경우 홈 페이지에서 로그인을 클릭해도 경로에 지정된 사용자 정의 컨트롤러가 아닌 홈 컨트롤러로 리디렉션됩니다. 등록 작업도 비슷한 일을 할 것입니다. 따라서 routeconfig를 변경하는 것과 별도로 RedirectionToAction ("Index", "Home")을 호출하고 컨트롤러 및 액션 이름으로 대체하는 코드를 변경해야합니다. – anIBMer