代码之家  ›  专栏  ›  技术社区  ›  kevingessner

验证URL是否映射到中的实际路由ASP.NetMVC公司

  •  4
  • kevingessner  · 技术社区  · 15 年前

    /Repo/{ixRepo}/{sSlug}/{sAction} /Repo/{sName}/{sAction} ,使用 ixRepo 得到正确的答案 sName . 这很好,我可以用一个RedirectResult将用户重定向到新的URL。

    但是,在重定向用户之前,我希望捕获具有无效操作的遗留URL。如何验证URL字符串是否映射到已注册的路由?MVC显然是在内部将请求映射到正确的操作,但是我想手工完成。

    var rd = Url.RouteCollection.GetRouteData(new HttpContextWrapper(new HttpContext(
        new HttpRequest("", newPath, ""),
        new HttpResponse(null))));
    

    似乎总是返回一个 System.Web.Routing.RouteData

    如何使用MVC的路由系统检查URL是否通过注册的路由映射到有效的控制器/操作?

    (我见过 ASP.NET MVC - Verify the Existence of a Route

    2 回复  |  直到 9 年前
        1
  •  3
  •   Craig Stuntz    15 年前

    有什么事吗 可以是路径,不管它是否实际映射到动作。

    认为 你在问,“这个执行正常吗,还是404?”那是另一个问题。

    为此,您需要像MVC那样做。查看MVC源代码 MvcHandler.ProcessRequestInit 然后 ControllerActionInvoker.InvokeAction 查看MVC如何分别查找控制器和操作。

        2
  •  1
  •   Community Mohan Dere    9 年前

    如果您了解控制器并要求执行有效的操作,只需像中所做的那样执行一些反射操作 here

    http://haacked.com/archive/2007/12/17/testing-routes-in-asp.net-mvc.aspx
    路由系统将请求URI映射到路由处理程序。如果mvc路由处理程序(类)失败,它将抛出一个异常。没有支票。