2012-09-12 118 views
0

我有一个模型,其中有一个下拉的参考数据的列表。参考数据基于当前用户。因此,用户A看到了分配给他的记录,用户B可以看到不同的记录。关键是,参考数据基于userId。模型访问会话变量?

的用户ID是在会话。模型是否有访问会话变量的方法? SelectionList的创建内置于模型中。所以,我可以把用户ID作为构造函数的参数 - 但我需要在该模型中的所有构造函数。似乎重复工作。我宁愿模型要能说,“啊,当前用户是用户1”,但它的自我。

可能吗?或者我有设计缺陷?

+0

样本编码将是有益的。 – VIRA

+1

检查此,它可以帮助你:http://stackoverflow.com/questions/735133/asp-net-mvc-how-to-access-session-data-in-places-other-than-controller-and-vie – 2012-09-12 07:13:09

回答

1

如何像这样

public class WibbleModelBuilder 
{ 
    private int _userId; 
    private WibbleRepository _repo; 
    public WibbleModelBuilder(WibbleRepository wibbleRepository, int userId) 
    { 
     _repo=wibbleRepository; 
     _userId=userId; 
    } 

    public WibbleModel Build() 
    { 
     var model = new WibbleModel(); 
     model.LookupList = _repo.GetLookupForUser(_userId); 
     return model; 
    } 
} 

现在你可以在你的控制器WibbleModelBuilder创建您并通过您的存储库和用户ID到构造。您的模型现在只是一个非常简单的数据对象

public class WibbleModel 
{ 
    public IList<ReferenceData> LookupList { get; set;} 
}