我使用的是Asp.Net MVC 3.0,我在共享文件夹中有_layout.cshtml。问题是我想在这个.cshtml中生成应该从数据库加载的菜单。但据我所知_layout.cshtml没有任何行动等关联,我可以编写逻辑,我不想在cshtml本身编写所有这些代码。是否有任何选项可以在共享文件夹中为cshtml编写逻辑?
答案 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
方法的示例实现: