在MVC应用程序中,主页面的代码放在哪里?

8
我在我的ASP.NET MVC应用程序中使用了几个(2或3)母版页,它们必须显示来自数据库的信息,例如赞助商列表,当前资金状态等等。

所以我的问题是,这些母版页的数据库调用代码应该放在哪里?

通常,应该将它们放入自己的控制器类中,对吗?但这意味着我必须手动连接它们(例如传递ViewDatas),因为它位于MVC框架提供的正常路由框架之外。

有没有一种干净的方法可以做到这一点,而不需要手动连接ViewData传递/操作调用到母版页或子类化框架?

文档数量非常少...我对MVC本身的概念也非常陌生,请分享您的技巧/技术。

3个回答

5
一种方法是在主页面视图中放置ViewData的钩子,然后定义一个BaseController:Controller(或多个基类),在其中执行所需的所有db调用。
你想做的事情与这篇文章中描述的内容非常相似。
希望这可以帮助你!
问候

1

好问题。您有几个选择可供使用。

  1. 在您的母版页上进行jQuery调用,从控制器中获取所需数据,然后再次使用jQuery填充您的字段。
  2. 第二个选择是创建用户控件,使它们自己调用控制器以填充其信息。

我认为最好的选择是为需要填充数据的母版页区域创建控件。因此,将您的母版页仅包含设计元素。祝你好运。


0

如果您不介意强类型视图数据,可以将所有主页面数据放在一个通用的基类中以供视图数据使用。您可以在基类的构造函数中设置此数据。然后,所有需要额外数据的视图都需要从此基类继承强类型视图数据。

为了允许在控制器中调用View()而无需任何显式视图数据,您可以在ControllerBase中重写View:

protected override ViewResult View(string viewName, string masterName, object model)
{
    if (model == null)
    {
        model = new ViewDataBase();
    }
    return base.View(viewName, masterName, model);
}

可能你想把它叫做BaseViewData :-) - chakrit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接