8

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

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

通常,这些应该进入它自己的控制器类,对吧?但这意味着我必须手动连接它们(例如传递 ViewDatas),因为它超出了 MVC 框架提供的正常路由框架。

有没有办法干净地做到这一点,而无需手动将 ViewData 传递/操作调用连接到母版页或对框架进行子类化?

文档的数量非常少......而且我对这一切都很陌生,包括 MVC 本身的概念,所以请分享你的提示/技术。

4

3 回答 3

5

一种方法是在主页面视图中放置 ViewData 的钩子,然后定义一个 BaseController : Controller(或多个基类),您可以在其中执行所需的所有 db 调用。

您想要做的与本文中描述的完全一样。

我希望这有帮助!

问候

于 2008-09-13T14:19:14.600 回答
1

好问题。您有多种选择。

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

我认为最好的选择是为您的母版页中需要填充数据的区域创建控件。从而让您的母版页严格包含设计元素。祝你好运。

于 2009-02-12T19:56:20.880 回答
0

如果您不介意强类型视图数据,您可以将所有母版页数据放在 viewData 的公共基类中。您可以在基类的构造函数中设置此数据。所有需要额外数据的视图都需要继承自这个基类的强类型视图数据。

要允许在没有任何显式视图数据的情况下在控制器中调用 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);
}
于 2008-09-15T20:49:40.010 回答