문제

저는 MVC(및 ASP.Net 라우팅)를 처음 사용합니다.지도를 하려고 하는데 *.aspx 컨트롤러에 PageController.

routes.MapRoute(
   "Page",
   "{name}.aspx",
   new { controller = "Page", action = "Index", id = "" }
);

위의 코드가 *.aspx를 다음으로 매핑하지 않습니까? PageController?이것을 실행하고 .aspx 페이지에 입력하면 다음 오류가 발생합니다.

'/Page.aspx' 경로에 대한 컨트롤러를 찾을 수 없거나 IController 인터페이스를 구현하지 않습니다.매개변수 이름:컨트롤러 유형

내가 여기서 하지 않는 일이 있나요?

도움이 되었습니까?

해결책

방금 내 질문에 대답했습니다.나는 경로가 뒤로 거꾸로 있었다 (기본값은 페이지 위에 있었다).

예, 모든 사용자 지정 경로를 기본 경로 위에 배치해야 합니다.

그러면 다음 질문이 떠오릅니다..."기본"경로 일치는 어떻게 "페이지"경로와 정규식을 사용한다고 가정합니까?

기본 경로는 구성보다 규칙이라고 부르는 것에 따라 일치합니다.Scott Guthrie는 ASP.NET MVC에 대한 그의 첫 번째 블로그 게시물에서 이에 대해 잘 설명합니다.이 책과 그의 다른 게시물도 읽어 보시기 바랍니다.이는 첫 번째 CTP를 기반으로 게시되었으며 프레임워크가 변경되었음을 명심하세요.Scott Hanselman이 작성한 asp.net 사이트의 ASP.NET MVC에 대한 웹캐스트도 찾을 수 있습니다.

다른 팁

방금 내 질문에 대답했습니다.나는 경로를 거꾸로 가지고 있었습니다(기본값은 페이지 위였습니다).아래는 올바른 순서입니다.그러면 다음 질문이 떠오릅니다..."기본" 경로가 "페이지" 경로와 어떻게 일치합니까(여기서는 정규식을 사용한다고 가정합니다)?

routes.MapRoute(
            "Page",
            "{Name}.aspx",
            new { controller = "Page", action = "Display", id = "" }
        );

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

Rob Conery의 MVC Storefront 중 하나 스크린캐스트, 그는 바로 이 문제에 직면합니다.궁금하시면 23분쯤부터 보세요.

컨트롤러가 어떻게 보이는지 잘 모르겠습니다. 오류는 컨트롤러를 찾을 수 없다는 사실을 가리키는 것 같습니다.PageController 클래스를 생성한 후 Controller를 상속받았습니까?PageController가 Controllers 디렉터리에 있습니까?

Global.asax.cs의 내 경로는 다음과 같습니다.

routes.MapRoute(
    "Page", 
    "{Page}.aspx", 
    new { controller = "Page", action = "Index", id = "" }
);

Controllers 폴더에 있는 내 컨트롤러는 다음과 같습니다.

using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class PageController : Controller
    {
        public void Index()
        {
            Response.Write("Page.aspx content.");
        }
    }
}
public class AspxRouteConstraint : IRouteConstraint
{
    #region IRouteConstraint Members

    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        return values["aspx"].ToString().EndsWith(".aspx");
    }

    #endregion
}

모든 aspx에 대한 경로를 등록하십시오.

  routes.MapRoute("all", 
                "{*aspx}",//catch all url 
                new { Controller = "Page", Action = "index" }, 
                new AspxRouteConstraint() //return true when the url is end with ".aspx"
               );

그리고 다음과 같이 경로를 테스트할 수 있습니다. MvcRouteVisualizer

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top