我应该在哪里写逻辑从数据库中获取菜单

本文关键字:数据库 获取 菜单 在哪里 我应该 | 更新日期: 2023-09-27 18:15:24

我使用Asp。Net MVC 3.0,我有我的_layout。共享目录下的cshtml文件。问题是我想在这个。cshtml中生成菜单,应该从数据库加载。但是我理解_layout。cshtml不会有任何动作等相关的地方,我可以写逻辑,我不想写所有这些代码在cshtml本身。是否有任何选项来编写逻辑的cshtml在共享文件夹?

我应该在哪里写逻辑从数据库中获取菜单

你可以设置一个控制器和一个视图来呈现菜单,并在_layout.cshtml中调用它。

@{ Html.RenderAction("Index", "Menus");  }

Eranga是正确的,但是让我扩展一下他的回答,具体地回答你的问题。

你能做的是创建一个新的控制器(例如"menus"),并创建一个名为default的操作。让这个操作返回一个视图,您可以随意调用它。现在转到您的共享文件夹,并使用刚才指定的名称添加视图。

现在是最酷的部分。默认情况下,MVC框架将首先查看controllername/viewname路径,如果失败,它将查看您的shared/viewname路径,这是您刚刚创建的视图所在的位置!整洁的,是吧?; p

查看http://www.aspnetmvcninja.com/views/view-search-paths获取更多关于MVC搜索路径的信息

@Eranga为您实现所要求的特性提供了良好的开端。我想下面两篇文章也会对你有所帮助:

Html。RenderAction和Html。行动:

http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx

带缓存的Html.Action方法的示例实现:

http://www.tugberkugurlu.com/archive/donut-hole-caching-in-asp-net-mvc-by-using-child-actions-and-outputcacheattribute