asp.net - mvc - asp net maproute examples



ASP.Net MVC 경로 매핑 (4)

나는 MVC (그리고 ASP.Net 라우팅)에 익숙하지 않다. * .aspx를 PageController 라는 컨트롤러에 매핑하려고합니다.

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

위 코드는 PageController * .aspx를 매핑하지 않습니까? 이걸 실행하고 .aspx 페이지에 입력하면 다음과 같은 오류가 발생합니다.

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

내가 여기서하고있는 게 없니?


Answer #1

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

예, 모든 맞춤 경로를 기본 경로 위에 배치해야합니다.

그러면 다음 질문이 생깁니다. "기본"경로가 "정규 경로"라는 정규 표현식과 어떻게 일치합니까?

기본 라우트는 컨벤션 오버 규칙이라 부르는 것에 기반하여 일치합니다. Scott Guthrie는 ASP.NET MVC에 대한 첫 번째 블로그 게시물에서이 점을 잘 설명합니다. 나는 당신이 그것과 다른 그의 포스트를 통해서 읽는 것이 좋습니다. 이러한 사항은 첫 번째 CTP를 기반으로 게시되었으며 프레임 워크가 변경되었음을 유념하십시오. Scott Hanselman이 asp.net 사이트에서 ASP.NET MVC에서 웹 캐스트를 찾을 수도 있습니다.


Answer #2

Rob Conery의 MVC Storefront 스크린 캐스트 에서 그는이 정확한 문제에 직면합니다. 관심이 있다면 약 23 분 남았습니다.


Answer #3

컨트롤러가 어떻게 보이는지 알 수 없지만 오류는 컨트롤러를 찾을 수 없다는 사실을 나타냅니다. PageController 클래스를 생성 한 후에 Controller를 상속 받았습니까? PageController는 Controllers 디렉토리에 있습니까?

Global.asax.cs의 경로가 여기에 있습니다.

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

다음은 컨트롤러 폴더에있는 컨트롤러입니다.

using System.Web.Mvc;

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

Answer #4
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를 사용 하여 경로를 테스트 할 수 있습니다.





routing