В этой статье блога мы погрузимся в мир ограничений маршрутов в.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. Используя числовые ограничения, длину строки, ограничения регулярных выражений или даже создавая собственные ограничения, вы можете гарантировать, что маршруты точно сопоставляются с учетом конкретных условий. Понимание и использование ограничений маршрутов повысит гибкость и надежность вашей системы маршрутизации.