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, которое выдает исключение, это должно сработать. Вы возвращаете ссылку, поэтому она должна обновляться соответствующим образом. Надеюсь, это поможет на будущее, по крайней мере

Другие вопросы по тегам