2014-12-04 44 views
0

我有一个MVC5应用程序使用布局页面来控制页眉和页脚等。布局页面有一些由数据库驱动的部分,例如导航栏。我不确定在何处拨打这些电话的最佳做法。我可以想到2种方法,但都不完美MVC5如何使数据库调用布局页面

方法1:传递数据与页面视图模型。不喜欢这种方法让我的主页控制器只应该关注主页内容,而不是布局。对于每一种观点都必须重复。方法2:向WebAPI控制器发送Ajax。有点倾向于此,但我认为这意味着丢失像@URL和@HTML这些被用于创建链接和呈现自定义内容的东西。

编辑:虽然另一种方法 方法3:将信息加载到缓存上的开始。由于这不是通常在初始设置后更改的信息,并且此代码显示在每个页面上,所以无论如何都需要缓存。

回答

4

您应该从视图内调用控制器方法。在您的视图上:

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

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

+1

这些被称为“儿童行为”,以防您需要搜索更多信息,是的,这是最好的方法。 – 2014-12-04 20:27:48

+0

感谢这就是我一直在寻找的。不知道为什么我没有想到要将它们分解成部分并以这种方式呈现。 – eweb 2014-12-05 15:54:29