模型访问会话变量?

时间:2012-09-12 07:05:25

标签: c# asp.net-mvc

我有一个模型,它有一个参考数据的下拉列表。参考数据基于当前用户。因此,用户A看到他分配给他的记录,用户B可以看到不同的记录。关键是,参考数据基于userId。

userId在Session中。模型是否有办法访问会话变量? SelectionList的创建内置于模型中。所以,我可以将UserId作为参数放在构造函数中 - 但我需要在模型的所有构造函数中使用它。似乎重复工作。我更喜欢这个模型能够说'啊,当前用户是User1',但它是自己的。

可能?或者我是否有设计缺陷?

1 个答案:

答案 0 :(得分: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,并将您的存储库和用户标识传递给构造函数。您的模型现在只是一个非常简单的数据对象

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