ビューでデータベースを使用するのは悪い習慣であることはわかっています。ただし、User
オブジェクトも渡しているので、どうすれば使いやすくできるのだろうか。
Ruby On Rails での動作が気に入っています。@instance_variable
inを作成しbefore_filter
、コントローラーとビューから呼び出すだけです。
ただし、ASP.NET MVC ではこれを行うことはできません。そこで、ビューに渡す必要があるすべてのデータ (DataContext と User) を含むクラスを作成しました。
public class XData
{
public DBDataContext DB { get; set; }
public User User { get; set; }
}
コントローラーの Initialize メソッドで、すべてのデータを取得します。
public XData X;
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
X = new XData();
X.DB = ...;
X.User = ....;
}
素晴らしい作品: 次のようにビューからデータベース オブジェクトを取得できます。
<%= Model.X.DB.Users.First().Name %>
データをビューに渡すには、次のことを行う必要があります。
public ActionResult Foo()
{
return View(new FooModel
{
X = X,
HelloMessage = "Hello world!"
});
}
ここで私が気に入らないのは、常にそのことを書かなければならないX = X
ことです。それを自動的に初期化するにはどうすればよいですか?
ありがとう