在ASP.NET MVC中,如果需要自定义路由并中断默认路由,可以使用RouteCollection类的IgnoreRoute方法来实现。
以下是一个示例代码:
using System.Web.Mvc;
using System.Web.Routing;
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// 自定义路由
routes.MapRoute(
name: "CustomRoute",
url: "custom/{id}",
defaults: new { controller = "Home", action = "CustomAction", id = UrlParameter.Optional }
);
// 默认路由
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
上述代码中,使用IgnoreRoute方法忽略了默认的资源路由 "{resource}.axd/{*pathInfo}",这样在访问这个路由时将不会执行默认的处理逻辑。
然后通过调用MapRoute方法来定义自定义路由和默认路由。可以看到自定义路由使用了"custom/{id}"的URL模式,并指定了对应的控制器和操作方法。默认路由使用了"{controller}/{action}/{id}"的URL模式,并指定了默认的控制器、操作方法和可选的id参数。
这样,在应用程序中访问自定义路由时,将执行自定义的处理逻辑,而访问其他路由时将执行默认的处理逻辑。