我知道在视图中使用数据库是一种不好的做法。但是,我也在传递User
对象,我想知道如何使它易于使用。
我喜欢它在 Ruby On Rails 中的工作方式。您只需创建一个@instance_variable
inbefore_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
东西。我怎样才能自动初始化它?
谢谢