Общая идея заключается в том, что вы не должны.
Ваш контроллер должен предоставить всю информацию, необходимую для представления.
Однако, возможно, стоит передать сеанс (или его части) вместе с ViewModel.
То, как я это делаю, у меня есть базовый класс для всех моих моделей представлений, имеющих доступ к контроллеру. Затем они могут напрямую запрашивать у контроллера конкретные объекты из сеанса, даже не открывая сеанс непосредственно представлению.
BaseView.cs
public abstract class BaseView<TModel> : SparkView<TModel> where TModel : ControllerResponse
{
// Stuff common to all views.
}
ControllerResponse.cs (базовая модель для всех представлений)
public class ControllerResponse
{
private BaseController controller = null;
private ControllerResponse() { }
public ControllerResponse(BaseController controller)
{
this.controller = controller;
}
// Here, you would place all of the methods that the BaseView should have access to.
}