2010-04-03 6 views
2

В моем приложении у меня есть строковый параметр под названием «магазин», что требуется во всех контроллерах, но он должен быть преобразован с помощью кода, как это:ASP.NET MVC контроллер

 shop = shop.Replace("-", " ").ToLower(); 

Как я могу сделать это глобально для всех контроллеров, не повторяя эту строку снова и снова? Спасибо, Leo

ответ

3

Написать custom action filter, переопределить 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(); 
    } 
} 
+0

Спасибо за быстрый ответ Его, он работал отлично! Это решение удалило 31 избыточные строки кода в моем приложении! Leo – 2010-04-04 03:38:08

+0

@ Leonardo: Мое удовольствие, я рад, что это сработало для вас! –

Смежные вопросы