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

发布于 2024-07-06 05:42:46 字数 337 浏览 6 评论 0原文

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

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

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

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

文档数量非常少...而且我对所有这些都非常陌生,包括 MVC 本身的概念,因此请分享您的技巧/技术。

I'm using a few (2 or 3) master pages in my ASP.NET MVC application and they must each display bits of information from the database. Such as a list of sponsors, current fundings status etc.

So my question was, where should I put these master-page database calling code?

Normally, these should goes into its own controller class right? But then that'd mean I'd have to wire them up manually (e.g. passing ViewDatas) since it is out of the normal routing framework provided by the MVC framework.

Is there a way to this cleanly without wiring ViewData passing/Action calls to master pages manually or subclassing the frameworks'?

The amount of documentation is very low... and I'm very new to all this including the concepts of MVC itself so please share your tips/techniques on this.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

白芷 2024-07-13 05:42:46

如果您不介意强类型视图数据,则可以将所有母版页数据放在 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);
}

If you don't mind strongly typed view data, you can put all the master page data in a common base class for viewData. You can set this data in the base class's constructor. All your views requiring additional data will then need strongly typed viewdata that inherits from this base class.

To allow a call to View() in your controllers without any explicit viewdata you can override View in your ControllerBase:

protected override ViewResult View(string viewName, string masterName, object model)
{
    if (model == null)
    {
        model = new ViewDataBase();
    }
    return base.View(viewName, masterName, model);
}
醉态萌生 2024-07-13 05:42:46

一种方法是在母版页视图中放入 ViewData 的挂钩,然后定义一个 BaseController : Controller (或多个基类),在其中执行所需的所有数据库调用。

您想要做的事情与 文章。

我希望这有帮助!

问候

One way to do this is to put in the masterpage view the hook for the ViewData and then you define a BaseController : Controller (or multiple base classes) where you do all the db calls you need.

What you wanna do is quite the same thing described in this articles.

I hope this helps!

Regards

人事已非 2024-07-13 05:42:46

很好的问题。 您有多种选择。

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

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

Great question. You have several options available to you.

  1. Have a jQuery call on your masterpage that grabs the data you need from a controller and then populate your fields using jQuery again.
  2. Your second option is to create user controls that make their own calls to the controller to populate their information.

I think the best choice is creating controls for the region of your masterpage that has data that needs to be populated. Thus leaving your masterpage to strictly contain design elements. Good luck.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文