같은 것을 우리는 아래 예와 같이 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)를 매핑합니다.
Alex에 대한 자세한 설명 주셔서 감사합니다. Alex –