ModelBinder不会更新会话密钥

时间:2010-02-16 21:32:28

标签: model-view-controller session object modelbinder

我创建了一个网站(它是poco对象)模型绑定器,用于检查会话:     public class WebsitesModelBinder:IModelBinder     {         private const string websitesSessionName =“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文件中,我为typeof网站注册了模型绑定器。 在我的控制器操作中,该操作将网站作为参数进行更新,如下所示:     公共ActionResult网站(Website SelectedSite)         {
            var sites = db.Websites.ToList();             if(SelectedSite.ID == 0)                 SelectedSite = sites [0];             ViewData [“Selectedsite”] = SelectedSite;

        return View(sites);
    }

但是模型绑定器永远不会更新会话 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我知道这已经过时了,可能不再有用了,但我在寻找自己的时候遇到了这个问题,并希望回答我的所作所为。如果删除抛出异常的if子句,那么这应该有效。您正在返回引用,因此应该适当更新。希望这对未来至少有帮助