我有一个模型活页夹来帮助处理多站点网站。每个 StoreObject 都有一组 SiteThemes。
public class StoreObject
{
.......
public virtual ICollection<SiteTheme> SiteThemes { get; set; }
}
然后,我将调用一个存储库对象,用新主题更新数据库。
public void SaveAndSetSiteTheme(SiteTheme t)
{
context.SiteThemes.Where(f => f.StoreObjectID == t.StoreObjectID).ToList().ForEach(p => p.Active = false);
if (t.SiteThemeID == 0)
{
t.Active = true;
context.SiteThemes.Add(t);
}
context.SaveChanges();
}
完成后,下面的模型绑定器具有正确的数据和 store.SiteThemes 将有 1 个主题。但是,当我再次刷新页面时,此模型活页夹已过时。store.SiteThemes 集合恢复到原始状态并且为空。我不知道到底发生了什么。如果需要更多信息,请帮助或让我知道。
public class StoreModelBinder : IModelBinder
{
private const string sessionKey = "Store";
private IStoreObjectRepository storeRepository;
public StoreModelBinder()
{
storeRepository = new StoreObjectRepository();
}
public object BindModel(ControllerContext controllerContext,
ModelBindingContext bindingContext)
{
Uri url = HttpContext.Current.Request.Url;
string dom = url.Host;
StoreObject store = storeRepository.Stores.FirstOrDefault(s => s.MainURL == dom);
if (store != null)
HttpContext.Current.Session[sessionKey] = store;
return store;
}
}