我创建了一个网站(它是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);
}
但是模型绑定器永远不会更新会话 有什么想法吗?
答案 0 :(得分:0)
我知道这已经过时了,可能不再有用了,但我在寻找自己的时候遇到了这个问题,并希望回答我的所作所为。如果删除抛出异常的if子句,那么这应该有效。您正在返回引用,因此应该适当更新。希望这对未来至少有帮助