Могу ли я получить доступ к ViewData из HttpContext?
Я работаю с проектом, который устанавливает переменные, такие как объект текущего профиля пользователя, в своем фильтре действий авторизации, сохраняя их в ViewData
для доступа следующим методом действия.
Затем метод действия вызывает функциональность из хранилища. Я пытаюсь найти способ получить доступ к ViewData
из хранилища БЕЗ изменения подписи метода хранилища, и я надеюсь, что есть способ, которым я могу отследить его через HttpContext.Current
функциональность, которую я могу вызвать из хранилища.
Может кто-нибудь помочь с этим? Просто чтобы быть понятным, единственный код, который я могу изменить, находится внутри метода репозитория:(
public class MyController : Controller {
[MyAuthorize] // ViewData items are set here
public void MyAction(int id)
{
new MyRepository().DoSomething(id); // Need to access ViewData items within this repository method and am unable to alter the method signature :(
}
}
1 ответ
Я уверен, что ответ "нет".
Когда вы просматриваете исходный код ASP.NET MVC, ControllerBase
создает экземпляр словаря ViewData при первом использовании. Затем, когда вы звоните View()
новый ViewResult
создается с ControllerBase.ViewData
словарь в качестве параметра. Это не похоже на применение к общему статическому свойству или классу HttpContext
который вы могли бы получить доступ из своего хранилища.
Я думаю, что ваш лучший выбор будет использовать HttpContext.Items
который построен для этого типа общения. Хотя, вероятно, не так идеален, как просто изменение хранилища для принятия дополнительных данных.