2010-02-16 3 views
1

Я создал веб-сайт (это рос объект) модель связующий, которая проверяет сессию: общественного класс WebsitesModelBinder: IModelBinder { частного Const строки websitesSessionName = «SelectedSite»;ModelBinder не обновляет сеансовый ключ

#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 я зарегистрировал привязку к модели для веб-сайта typeof. В действии моего контроллера действие получает веб-сайт в качестве параметров и обновляет его, например: общедоступные сайты ActionResult (сайт SelectedSite) {
var sites = db.Websites.ToList(); if (SelectedSite.ID == 0) SelectedSite = sites [0]; ViewData ["Selectedsite"] = SelectedSite;

 return View(sites); 
    } 

Однако модель связующий никогда не обновляет сессии Любые идеи?

+0

Ваше форматирование немного не делает код более трудным для чтения. – smaclell

ответ

0

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

Смежные вопросы