Обработка параметров контроллера 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();
    }
}
Другие вопросы по тегам