Asp.net mvc 5 MVC5如何对布局页面进行db调用

Asp.net mvc 5 MVC5如何对布局页面进行db调用,asp.net-mvc-5,asp.net-web-api,asp.net-mvc-layout,Asp.net Mvc 5,Asp.net Web Api,Asp.net Mvc Layout,我有一个MVC5应用程序,它使用布局页面来控制页眉和页脚等。布局页面有一些数据库驱动的部分,例如导航栏。我不确定在哪里打这些电话的最佳做法是什么。我可以想出两种方法,但都不完美 方法1:使用pages视图模型传入数据。不喜欢这种方法有我的主页控制器应该只关注主页内容,而不是布局。对于每个视图,都必须重复此操作 方法2:Ajax到WebAPI控制器。有点倾向于这样,尽管我认为这意味着丢失了@URL和@HTML等用于创建链接和呈现自定义内容的东西 编辑:尽管是另一种方法 方法3:启动时将信息加载到缓

我有一个MVC5应用程序,它使用布局页面来控制页眉和页脚等。布局页面有一些数据库驱动的部分,例如导航栏。我不确定在哪里打这些电话的最佳做法是什么。我可以想出两种方法,但都不完美

方法1:使用pages视图模型传入数据。不喜欢这种方法有我的主页控制器应该只关注主页内容,而不是布局。对于每个视图,都必须重复此操作

方法2:Ajax到WebAPI控制器。有点倾向于这样,尽管我认为这意味着丢失了@URL和@HTML等用于创建链接和呈现自定义内容的东西

编辑:尽管是另一种方法
方法3:启动时将信息加载到缓存中。由于这不是初始设置后经常更改的信息,并且此代码显示在每个页面上,因此无论如何都需要缓存

应该从视图中调用控制器方法。在你看来:

@Html.Action("MyAction", "MyController")

确保此操作可以找到它需要的所有内容,而无需传入值,并且您已设置。我们在几个项目中通过服务位置和/或依赖项注入来实现这一点。

您应该从视图中调用控制器方法。在你看来:

@Html.Action("MyAction", "MyController")

确保此操作可以找到它需要的所有内容,而无需传入值,并且您已设置。我们在几个项目中通过服务位置和/或依赖注入来实现这一点。

这些被称为“子操作”,以防您需要搜索更多信息,是的,这是最好的方法。谢谢,这就是我一直在寻找的。我不知道为什么我不想把它们分解成部分并以这种方式呈现。这些被称为“子动作”,以防你需要搜索更多信息,是的,这是最好的方法。谢谢,这就是我一直在寻找的。我不知道为什么我不想把它们分解成部分,并以这种方式呈现。