2014-05-20 2 views
2

나는 변화가 진행되는 동안 프로젝트를 천천히 마이그레이션하려고하므로 기존의 webforms 프로젝트에 MVC를 추가했습니다. 두 가지 모두에 액세스 할 수 있어야하지만 기본적으로 aspx 페이지가 있어야합니다. 웹 폼과 MVC가있는 프로젝트에서 aspx 페이지로 라우팅

는 라우팅 등록에 관해서

, 나는 현재 장소에 있습니다

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

     routes.MapPageRoute("Backup", "{*anything}", "~/Default.aspx"); 

     routes.MapRoute(
      "MVC", 
      "{controller}/{action}/{id}", 
      new { controller = "Test", action = "Index", id = 1 } 
     ); 
    } 

을하지만, 내가이 같은 설정이있을 때, 내가 알고있는 URL에 넣어 경우에도이 컨트롤러를 말한다/action 조합 (예 :이 줄의 마지막 줄에서 Test 및 Index)을 사용하더라도 사용자를 Default.aspx 페이지로 리디렉션합니다. 나는 다음에 이상이 변경 해봤

:

여기
private void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      "MVC", 
      "{controller}/{action}/{id}", 
      new { controller = "Test", action = "Index", id = 1 } 
     ); 

     routes.MapPageRoute("Backup", "{*anything}", "~/Default.aspx"); 
    } 

, 사용자가 페이지를 지정하거나 컨트롤러/액션을 지정할 수 있지만 그들은 어떤 컨트롤러/aspx 페이지를 포함하지 않는 경우, 그것을 기본 MVC 경로가 기본값 인 반면 webform Default.aspx로 기본 설정되어 있어야합니다.

페이지/컨트롤러를 지정하지 않으면 ~/Default.aspx로 지정되고 컨트롤러가 지정되면 해당 컨트롤러로 연결됩니다.

답변

2

시나리오를 실험 해봤는데 기존 웹 양식 응용 프로그램이 있고 mvc가 추가되었습니다. 기본적으로 나는 두 가지 해결책을 생각해 냈습니다.

첫 번째 :을 무시하면 routes.MapPageRoute을 경로 구성에 추가하는 것을 무시할 수 있습니다. 이것은 내가 기본값에서 컨트롤러에 대한 값을 제외한을주의하시기 바랍니다

public static class RouteConfig 
    { 
     public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.EnableFriendlyUrls(); 

      routes.IgnoreRoute("{resource}.aspx/{*pathInfo}"); 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

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

을했을 것입니다. 현재 일치하는 항목이 있고 해당 이름 옆에 컨트롤러가없는 경우 요청은 aspx 페이지를 찾는 일반 ASP.Net 파이프 라인으로 되돌아갑니다. 이 방법에서 당신은에서 지역을 새로운 MVC 기반 작업 폴더를 영역을 만들 수 있으며, RouteConfig를 떠나 : :이 방법을 사용하면 http://localhost:62871/ 또는 http://localhost:62871/Home/Index 또는 http://localhost:62871/Home/ 또는 http://localhost:62871/About.aspx 둘째

같은 URL을 요청할 수App_Start으로 기본 설정하면 다음과 같이 표시됩니다.

public static class RouteConfig 
    { 
     public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.EnableFriendlyUrls(); 
     } 
    } 

다음 지역 등록 클래스의 예를 다음과 같이 경로를 정의합니다. 도움이

public class AdminAreaRegistration : AreaRegistration 
    { 
     public override string AreaName 
     { 
      get 
      { 
       return "Admin"; 
      } 
     } 

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

희망. 감사.

+0

고맙습니다. 첫 번째 접근 방식은 완벽하게 작동하고 내가 지금 필요로하는 부분을 다루고 있지만, 그런 방식으로 상황을 분할해야한다면 두 번째 접근 방식을 사용할 수 있습니다. 이것은 큰 도움이됩니다! – Lyise

+0

도움이 될 수있어서 기쁩니다! –

관련 문제