ModelBinder не обновляет сеансовый ключ - PullRequest
1 голос
/ 17 февраля 2010

Я создал механизм связывания модели 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);
    }

Однако связыватель модели никогда не обновляет сеанс Есть идеи?

1 Ответ

0 голосов
/ 10 ноября 2011

Я знаю, что это старый и, возможно, больше не будет полезен, но я наткнулся на это в поисках себя и хотел ответить из того, что я сделал. Если вы удалите предложение if, которое выдает исключение, это должно сработать. Вы возвращаете ссылку, поэтому она должна обновляться соответствующим образом. Надеюсь, это поможет в будущем, по крайней мере,

...