Я знаю, что это плохая практика - использовать базу данных в представлении.Тем не менее, я также передаю объект User
, и мне интересно, как я могу упростить его использование.
Мне нравится, как он работает в Ruby On Rails.Вы просто создаете @instance_variable
в 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
.Как я могу инициализировать это автоматически?
Спасибо