0

参照データのドロップダウン リストがあるモデルがあります。参照データは、現在のユーザーに基づいています。したがって、ユーザー A は自分に割り当てられた自分のレコードを表示し、ユーザー B は別のレコードを表示できます。ポイントは、参照データが userId に基づいているということです。

userId はセッションにあります。モデルがセッション変数にアクセスする方法はありますか? SelectionList の作成は、モデルに組み込まれています。したがって、UserId をパラメーターとしてコンストラクターに入れることができますが、モデルのすべてのコンストラクターでそれが必要です。仕事の重複のようです。モデルが「ああ、現在のユーザーは User1 です」と言うことができるようにしたいと思いますが、それは自分自身です。

可能?それとも設計上の欠陥がありますか?

4

1 に答える 1

1

How about something like this

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;
   }
}

Now you can create you WibbleModelBuilder in your controller and pass your repository and userid into the constructor. Your model is now just a very simple data object

public class WibbleModel
{
   public IList<ReferenceData> LookupList { get; set;}
}
于 2012-09-12T07:25:50.630 に答える