ModelBinder не обновляет сеансовый ключ
Я создал механизм связывания модели Website(это объект poco), который проверяет сеансы: public class WebsitesModelBinder:IModelBinder { private const string 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 я зарегистрировал привязку модели для типа сайта. В моем действии контроллера действие получает веб-сайт в качестве параметров и обновляет его, например: public ActionResult Websites (Website SelectedSite) {
var sites = db.Websites.ToList (); if (SelectedSite.ID == 0) SelectedSite = sites [0]; ViewData ["Selectedsite"] = SelectedSite;
return View(sites);
}
Однако модель Binder никогда не обновляет сессию. Есть идеи?
1 ответ
Я знаю, что это старое и, возможно, больше не будет полезным, но я наткнулся на это в поисках собственного и хотел ответить из того, что я сделал. Если вы удалите предложение if, которое выдает исключение, это должно сработать. Вы возвращаете ссылку, поэтому она должна обновляться соответствующим образом. Надеюсь, это поможет на будущее, по крайней мере