2016-08-30 5 views
0

나는 그것이 일반적인 방법 알고 :routes.MapRoute 혼란

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

을하지만이 같은 시도하는 경우 :

routes.MapRoute 
    (
      name: "Defaults", 
      url: "Home/Index/1" 
    ); 

그것은 프로젝트를 실행하려면 오류를 제공하지 않습니다. 나는 내 HomeControllerController = HomeAction = Index()을 가지고 있지만 왜이 웹 사이트에 http://localhost:1702/Home/Index/1을 입력하는 동안 오류가 발생합니까?

Error: The matched route does not include a 'controller' route value, which is required.

라우팅에 필수적인 부분은 무엇입니까? 또 다른 질문은 : 우리가 왜 Route Name이 필요한지 ??

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

'routes.MapRoute ( 이름 : "기본", URL : "{컨트롤러}/{동작}/{ID}", 기본값 = "홈"새로운 {컨트롤러, 액션 = "인덱스", ID = UrlParameter.Optional} ); –

+0

아니요. 나 같은 것을 시도하면 오류가 발생하지 않습니다. 나는 길을 안다.지도가 너처럼된다. 기본적으로 세 부분으로 구성됩니다. 이름, URL 및 기본값, 나는 이것을 알고 –

+0

아마 [this] (http://stackoverflow.com/questions/23752298/mvc-routing-whyi-i-can-not-ignore-defaults-the-matched-route-does -not-include-a) 도움이 될까요? 귀하의 질문은 중복 것처럼 보입니다. –

답변

0

name=""처럼, 그것은 경로가 하나 존재도보다 더 잘 작동합니다. 당신은 심지어 그것을 변경할 수 있습니다

url: "{action}/{controller}/{id}" 

컨트롤러가 무엇인지 그리고 어떤 조치가 필요한지 이해하려면 URL 구조를 제공해야합니다.

+0

일반적인 접근 방법입니다. 기본값을 사용하지 않으면 문제가 무엇입니까 ?? –

+0

내 질문이 수정되었습니다. –

+0

@LutforRahman [오버로드 된 메서드] (https://msdn.microsoft.com/en-us/library/system.web.mvc.routecollectionextensions.maproute (v = vs.118) .aspx)에 나와 있습니다. 'defaults'가 필요하지 않습니다. 왜 그렇게 시도하지 않으 시렵니까? –

0

URL을 최종 사용자의 URL 구조를 정의하는 것입니다 : 내가 name=""을주는 경우에 당신이 필요