2014-12-03 2 views
0

저는 MVC를 처음 접했고 배우는 동안 의문의 여지가 있습니다. 즉, MVC에서 여러 가지 라우팅 패턴을 아래 예제와 같이 사용할 수 있습니까?asp.net MVC의 다중 라우팅 패턴

url : "{controller}/{action}/{id}"---> 표준 방식;

url : "{action}/{controller}/{id}"---> 유효한 라우팅 패턴입니까? 그렇다면 라우팅 엔진이 actionname 인 세그먼트와 내 URL이 controllername 인 세그먼트를 어떻게 식별합니까? 이

http://abcd:12345/ControllerName/ActionName/Id 

답변

2

같은 것을 우리는 아래 예와 같이 MVC 뭔가에 여러 경로 패턴을 가질 수 있습니다.

url : "{controller}/{action}/{id}"---> 표준 방식;

URL : "{동작}/{컨트롤러}/{ID}"--->이 유효한 라우팅 패턴

  • 당신이 당신의 질문에 지정된 두 라우팅 패턴이 유효입니다.

경로 구성에 맞춤 경로를 추가하여 쉽게 테스트 할 수 있습니다. 추가 경로로 예를 들면 :

routes.MapRoute( name: "test", url: "{action}/{controller}/{id}");

하고 브라우저 다음과 같은 작업을 명중 할에 http://localhost/TestAction/Home/8를 입력 : 세그먼트 actionname 및 하는 세그먼트

public class HomeController : Controller 
    { 
     public ActionResult TestAction(int id) 
     { 
      return Json(id,JsonRequestBehavior.AllowGet); 
     } 
} 

어떻게 라우팅 않는 엔진을 식별 controllername입니까?

  • 라우팅 엔진 동작 {} 및 {} 제어기 경로 매개 변수 또는 경로를 등록 할 때 제공 기본값으로 작용 제어 세그먼트들을 식별한다.

  • 또한 쉽게 테스트 할 수 있습니다 : 당신이 경로 선언 순서가 그래서 System.InvalidOperationException: The matched route does not include a 'controller' route value, which is required.

  • MVC는 경로 패턴에 맞는 첫 번째 경로에 URL을 매핑합니다 얻을 것이다 {notcontroller}/{action}/{id}에 경로 및 변경 URL에서 기본값을 제거 매우 중요합니다. 가장 제한적인 경로를 먼저 선언해야하며 기본 경로는 마지막 경로 여야합니다.

일반적으로 mvc 라우팅은 매우 유연합니다. 당신은 예를 들어 서로 다른 URL 패턴을 만들 수 있습니다

Routes.MapRoute(
        name: "test", 
        url: "{controller}-{action}/{id}"); 

http://localhost/Home-Index/5

등의 요청에 더 큰 유연성을 제공 Attribute routing을 도입 MVC (5)를 매핑합니다.

+0

Alex에 대한 자세한 설명 주셔서 감사합니다. Alex –