我在ASP.NET MVC应用程序中使用了一些(2或3)母版页,并且每个母版页都必须显示数据库中的一些信息。如赞助商名单,现有资金状况等。
所以我的问题是,我应该把这些主页数据库调用代码放在哪里?
通常,这些应该进入自己的控制器类吗?但那意味着我必须手动连接它们(例如传递ViewDatas),因为它超出了MVC框架提供的正常路由框架。
有没有办法干净地没有连接ViewData传递/手动调用主页或子类化框架'?
文档量非常低......我对这一切都很陌生,包括MVC本身的概念,所以请分享你的提示/技巧。
答案 0 :(得分:5)
执行此操作的一种方法是在主页面视图中放入ViewData的挂钩,然后定义一个BaseController:Controller(或多个基类),您可以在其中执行所需的所有数据库调用。
你想做的事与this文章中描述的完全相同。
我希望这有帮助!
此致
答案 1 :(得分:1)
好问题。您有几种选择。
我认为最好的选择是为您的母版页区域创建控件,该区域包含需要填充的数据。因此,让您的母版页严格包含设计元素。祝好运。
答案 2 :(得分:0)
如果您不介意强类型视图数据,可以将所有母版页数据放在viewData的公共基类中。您可以在基类的构造函数中设置此数据。所有需要额外数据的视图都需要从此基类继承的强类型视图数据。
要允许在没有任何显式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);
}