Обработка параметров контроллера ASP.NET MVC
В моем приложении у меня есть строковый параметр с именем "shop", который требуется во всех контроллерах, но его нужно преобразовать с помощью кода, подобного следующему:
shop = shop.Replace("-", " ").ToLower();
Как я могу сделать это глобально для всех контроллеров, не повторяя эту строку снова и снова? Спасибо лев
1 ответ
Решение
Написать пользовательский фильтр действий, переопределить OnActionExecuting()
и примените фильтр ко всем вашим контроллерам. (Или просто переопределение OnActionExecuting()
в вашем базовом контроллере, если у вас вообще есть базовый контроллер.) Метод действия будет выглядеть примерно так:
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var parameters = filterContext.ActionParameters;
object shop;
if (parameters.TryGetValue("shop", out shop))
{
parameters["shop"] = ((string)shop).Replace("-", " ").ToLower();
}
}