В этой статье блога мы погрузимся в мир ограничений маршрутов в.NET Core 2.1. Ограничения маршрутов позволяют определять правила сопоставления и ограничения маршрутов в веб-приложении ASP.NET Core. Используя эти ограничения, вы можете добавить гибкости и контроля в свою систему маршрутизации и гарантировать, что правильные маршруты сопоставляются с учетом конкретных условий. Итак, давайте рассмотрим некоторые методы и примеры использования возможностей ограничений маршрутов!
-
Основное ограничение маршрута: числовые значения
routes.MapRoute( name: "Product", template: "product/{id:int}", defaults: new { controller = "Product", action = "Details" } );
В этом примере ограничение маршрута
{id:int}
запрещает параметруid
принимать только целочисленные значения. Таким образом, маршрут/product/123
будет соответствовать, а/product/abc
— нет. -
Ограничение длины строки
routes.MapRoute( name: "Search", template: "search/{query:minlength(3)}", defaults: new { controller = "Search", action = "Results" } );
Здесь ограничение маршрута
{query:minlength(3)}
гарантирует, что параметрquery
должен иметь минимальную длину 3 символа. Таким образом, маршрут/search/abc
будет соответствовать, а/search/ab
— нет. -
Ограничение регулярного выражения
routes.MapRoute( name: "Category", template: "category/{name:regex(^\\w{{3,8}}$)}", defaults: new { controller = "Category", action = "Details" } );
В этом примере ограничение маршрута
{name:regex(^\\w{{3,8}}$)}
использует регулярное выражение для сопоставления параметраname
с шаблоном. Здесь шаблон указывает, чтоname
должно состоять из 3–8 символов слова. Таким образом,/category/books
будет соответствовать, а/category/abcdefg
— нет. -
Пользовательское ограничение маршрута
public class CustomConstraint : IRouteConstraint { public bool Match(HttpContext httpContext, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection) { // Custom constraint logic goes here } } routes.MapRoute( name: "Custom", template: "custom/{value:custom}", defaults: new { controller = "Custom", action = "Details" }, constraints: new { value = new CustomConstraint() } );
В этом примере показано, как создать пользовательское ограничение маршрута, реализовав интерфейс
IRouteConstraint
. Вы можете определить свою собственную логику в методеMatch
, чтобы определить, должен ли маршрут сопоставляться или нет.
Ограничения маршрутов в.NET Core 2.1 предоставляют мощный способ контроля и проверки маршрутов в веб-приложении ASP.NET Core. Используя числовые ограничения, длину строки, ограничения регулярных выражений или даже создавая собственные ограничения, вы можете гарантировать, что маршруты точно сопоставляются с учетом конкретных условий. Понимание и использование ограничений маршрутов повысит гибкость и надежность вашей системы маршрутизации.