저는 웹 사이트에서 Route Constraint를 사용합니다. 이제 특성 라우팅을 사용해야합니다.Route Constraint와 Attribute Routing을 함께 사용하는 방법?
경로 제약 클래스 : 특성 라우팅을위한
public class BusConstraint : IRouteConstraint
{
private RouteDB routeDb = new RouteDB();
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
if (values[parameterName] != null)
{
var permalink = values[parameterName].ToString();
try
{
List<AdakDbConnect.RouteTable> routeTables;
if (HttpContext.Current.Cache["RouteTables"] == null)
{
routeTables = routeDb.GetRouteTables(AdakDbDll.Username, AdakDbDll.Password);
HttpContext.Current.Cache.Add("RouteTables", routeTables, null, DateTime.Now.AddMinutes(45), TimeSpan.Zero, CacheItemPriority.Normal, null);
}
else
{
routeTables = HttpContext.Current.Cache["RouteTables"] as List<AdakDbConnect.RouteTable>;
}
RouteTable Route = routeTables?.FirstOrDefault(p => p.Link == permalink && p.Controlller == "Bus");
if (Route != null)
{
return true;
}
}
catch (System.Exception)
{
}
return false;
}
return false;
}
}
행동 이상이 코드를 사용 : 만 현재 일
[Route("Bus")]
[Route("Bus/index")]
[Route("Bus/{From:int}/{To:int}/{Date:int}/{IsForeign:int:range(0,1)}/{Title}")]
특성 라우팅 및 경로 제약의 일단. 그러나이 경우 속성 라우팅과 같이 함께 사용할 경우에만 작동하고 경로 제한은 작동하지 않습니다.
RouteConfig :
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapMvcAttributeRoutes();
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//---------------------BusRoute---------------------------
routes.MapRoute(
name: "BusRoute",
url: "{*permalink}",
defaults: new { controller = "Bus", action = "Index" },
constraints: new { permalink = new BusConstraint() },
namespaces: new[] { "TravelEnterProject.Controllers" }
);
}
어떻게 사용할 수있는 경로 제약과 특성이 함께 라우팅?
사용자 지정 특성을 만들어야합니다. [이 기사] (https://weblogs.asp.net/jongalloway/looking-at-asp-net-mvc-5-1-and-web-api-2 -1-part-2-attribute-routing-with-custom-constraints) 예를 들어 –
내 URL 중 하나는 "/ Bus-Ticket"입니다. 현재이 속성 라우팅을 삭제하는 경우 또는 현재 [Route ("Bus-Ticket")]이 현재 작동합니다. 이제 맞춤 속성 라우팅을 만드는 방법은 무엇입니까? 코드를 게시 할 수 있습니까? – programmer138200