Если вам нужно смоделировать сеанс, вы делаете это неправильно :) Часть паттернов MVC заключается в том, что методы действия не должны иметь никаких других зависимостей, кроме параметров.Поэтому, если вам нужен сеанс, попробуйте «обернуть» этот объект и использовать привязку модели (ваше связывание пользовательской модели, привязку не из данных POST, а из сеанса).
Примерно так:
public class ProfileModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (bindingContext.Model != null)
throw new InvalidOperationException("Cannot update instances");
Profile p = (Profile)controllerContext.HttpContext.Session[BaseController.profileSessionKey];
if (p == null)
{
p = new Profile();
controllerContext.HttpContext.Session[BaseController.profileSessionKey] = p;
}
return p;
}
}
не забудьте зарегистрировать его при запуске приложения, и чем вы можете использовать его следующим образом:
public ActionResult MyAction(Profile currentProfile)
{
// do whatever..
}
хорошо, полностью тестируемый, наслаждайтесь:)