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

时间:2011-11-20 06:29:41

标签: c# asp.net-mvc asp.net-mvc-3

我使用的是Asp.Net MVC 3.0,我在共享文件夹中有_layout.cshtml。问题是我想在这个.cshtml中生成应该从数据库加载的菜单。但据我所知_layout.cshtml没有任何行动等关联,我可以编写逻辑,我不想在cshtml本身编写所有这些代码。是否有任何选项可以在共享文件夹中为cshtml编写逻辑?

3 个答案:

答案 0 :(得分:1)

您可以设置一个控制器和一个视图来渲染菜单,并在_layout.cshtml内调用它。

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

答案 1 :(得分:1)

Eranga是正确的,但让我扩展他的答案,专门回答你的问题。

您可以做的是创建一个新控制器(例如“菜单”),并创建一个名为default的操作。让这个动作返回一个视图,无论你想要什么,都可以调用它。现在转到您的共享文件夹,并使用您刚刚指定的名称添加视图。

现在为酷的部分。默认情况下,MVC框架将首先查看controllername / viewname路径,如果失败,它将查看您刚刚创建的视图所在的共享/视图名路径!整洁,对吧? ; P

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

答案 2 :(得分:0)

@Eranga为您提供了实施所请求功能的良好开端。我认为以下两篇文章也会有所帮助:

  

Html.RenderAction和Html.Action:

     

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