Я создал механизм связывания модели Website (это poco object), который проверяет сессии:
общедоступные классы WebsitesModelBinder: IModelBinder
{
приватная константная строка sitesSessionName = "SelectedSite";
#region IModelBinder Members
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
if (bindingContext.Model != null)
throw new InvalidOperationException("Invalid");
Website site = (Website)controllerContext.HttpContext.Session[websitesSessionName];
if (site == null)
{
site = new Website();
controllerContext.HttpContext.Session[websitesSessionName] = site;
}
return site;
}
#endregion
}
В файле global.asax я зарегистрировал привязку модели для типа сайта.
В моем действии контроллера действие получает веб-сайт в качестве параметров и обновляет его, например:
общедоступные сайты ActionResult (сайт SelectedSite)
{
var sites = db.Websites.ToList ();
if (SelectedSite.ID == 0)
SelectedSite = sites [0];
ViewData ["Selectedsite"] = SelectedSite;
return View(sites);
}
Однако связыватель модели никогда не обновляет сеанс
Есть идеи?