2013-06-07 3 views
-1

В моем приложении необходимо передать определенный параметр, когда он существует, через все страницы.Передача параметра через все страницы MVC4

Каков наилучший способ для этого? Есть какая-то функция, которая вызывается всякий раз, когда я делаю запрос GET или POST, в котором я могу проверить, существует ли параметр и сохраняется ли он?

+2

Можете ли вы опубликовать существующие функции и показать пример того, что вы уже пробовали? Возможно, ваш путь уже лучше. –

+1

Можете ли вы не просто сохранить параметр в сеансе где-нибудь и получить доступ к нему там, где это необходимо? –

+0

Я не знаю, почему нисходящий. Что-то не так с моим вопросом? –

ответ

1

Создайте фильтр действий, как показано ниже.

public sealed class ScaffoldActionFilter : ActionFilterAttribute 
    { 

     public override void OnActionExecuted(ActionExecutedContext filterContext) 
     { 
       var model = filterContext.Controller.ViewData.Model as PageModelBase; 
        // Whatever you want to do. 
       model.myParam = "Im available in all views"; 
     } 
    } 

Дальше зарегистрируйте его для запуска по каждому запросу. Посмотрите в app_start/filterconfig.cs и так оно и будет.

filters.Add(new ScaffoldActionFilter()); 

Теперь просто верните стандартную pagebasemodel или производный тип из каждого вида, и у вас есть то, что вы хотите.

+0

Спасибо за ответ @RubbleFord! Делая это, нет необходимости ставить [ScaffoldActionFilter] на каждое действие, правильно? –

+1

Правильно, вы регистрируете его как глобальный фильтр, поэтому он работает для всего. Следует отметить, что вам может потребоваться настроить исключения для jsonresults или partialresults, но это легко сделать. Спроси меня, если ты в тупик. Также вы можете отметить это как ответ :-) нужны точки. – RubbleFord

+0

Спасибо! Помогли мне много! –

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