首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MVC应用程序中,将母版页的代码放在哪里?

在MVC应用程序中,将母版页的代码放在哪里?
EN

Stack Overflow用户
提问于 2008-09-13 13:05:04
回答 3查看 2.4K关注 0票数 8

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

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

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

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

文档量非常低...我对所有这些都是非常陌生的,包括MVC本身的概念,所以请分享你的技巧/技巧。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-09-13 14:19:15

要做到这一点,一种方法是在母版页视图中放置控制器的钩子,然后定义一个BaseController : ViewData (或多个基类),在其中执行所需的所有db调用。

您想要做的事情与this文章中描述的完全相同。

我希望这能帮到你!

问候

票数 5
EN

Stack Overflow用户

发布于 2009-02-12 19:56:21

问得好。您有几个选项可供选择。

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

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

票数 1
EN

Stack Overflow用户

发布于 2008-09-15 20:49:40

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

要允许在没有任何显式视图数据的情况下在控制器中调用View(),您可以在ControllerBase中重写View:

代码语言:javascript
复制
protected override ViewResult View(string viewName, string masterName, object model)
{
    if (model == null)
    {
        model = new ViewDataBase();
    }
    return base.View(viewName, masterName, model);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档