Книга: ASP.NET MVC Framework
Маршруты и валидация запросов
Маршруты и валидация запросов
Как уже говорилось в этой главе, маршрутизация ASP.NET содержит механизм ограничений, который позволяет более гибко управлять обработкой маршрутов. Но кроме собственно поиска правильного маршрута, этот механизм позволяет также производить валидацию запросов еще на этапе поиска и обработки маршрута.
Представьте себе ситуацию, когда вы создаете маршрут, одним из параметров которого является число, определяющее год. Совершенно очевидно, что такое число имеет допустимые рамки, и его валидность может быть проверена еще на этапе сопоставления маршрутов. В листинге 6.1 приведен фрагмент кода, который определяет экземпляр класса, реализующий IRouteConstraint
для такого рода проверки параметра.
Листинг 6.1. Класс, реализующий IRouteConstraint
public class YearConstraint : IRouteConstraint {
public bool Match(HttpContextBase httpContext,
Route route,
string parameterName,
RouteValueDictionary values,
RouteDirection routeDirection)
{
if (parameterName == "year")
{
try
{
object yearValue = values["year"];
int year = Convert.ToInt32(yearValue);
if (year >= 1900 && year <= 2100) return true;
}
catch
{
return false;
}
}
return false;
}
}
Для того чтобы использовать данный класс, необходимо определить маршрут с параметрами ограничения примерно так, как показано во фрагменте:
var constraints = new RouteValueDictionary
{
{"year", new YearConstraint()}
};
routes.MapRoute("YearData",
"{controller}/{action}/{year}",
new { controller = "Data", action = "Index" },
new { year = new YearConstraint() }
Вся прелесть этого механизма заключается в том, что вы можете использовать ограничение для параметров различных маршрутов. Таким образом, вы получаете централизованный механизм обработки и валидации входных параметров, который начинает работать еще до того, как в действие вступит контроллер.
- Улучшенный оптимизатор запросов
- Асинхронный сервер и отмена выполняющихся запросов
- 1. Оператор Select – базовый оператор языка структурированных запросов
- 2. Унарные операции на языке структурированных запросов
- 3. Бинарные операции на языке структурированных запросов
- 4. Использование подзапросов
- Обработка запросов с помощью PHP
- Лекция 11. История запросов
- 6.3. Импорт запросов на перенос
- Создание простых запросов на выборку
- Работа с конструктором запросов
- Практическая работа 57. Построение запросов