在 ASP.NET MVC 中连接数据库驱动菜单的最佳方法
我正在寻找一种在 ASP.NET MVC 中处理数据库驱动菜单的方法,该方法不违反 MVC 原则。 我想用我的数据库中的内容替换硬编码的默认“主页,关于”菜单。 我该如何连接它? 我是否只需在我的 Site.Master 中设置一个 ContentPlaceHolder 并在我的视图中重新生成? 这对我来说似乎不对。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我的主菜单是一个 ViewUserControl,它在我的 MasterPage 中呈现为部分视图。 虽然我的是硬编码的,但您可以轻松地从 ViewData 生成它。 从视图数据生成它可能涉及实现一个自定义 FilterAttribute,该自定义 FilterAttribute 指定用于生成将应用于每个控制器/操作的菜单的参数,或者,如果每个页面上的菜单相同,则实现一个填充的基本控制器通过重写 OnActionExecuted 并添加到其中的 ViewData 来添加视图数据。
示例(注意,您可能会使用缓存来获取结果,而不是每次都从数据库获取结果)。
模型类
MenuControl.ascx :类型为
System.Web.Mvc.ViewPage
>
MasterPage
BaseController
My main menu is a ViewUserControl that is rendered as a partial view in my MasterPage. Although mine is hard-coded, you could easily generate it from ViewData. Generating it from view data would probably involve implementing either a custom FilterAttribute that specified the parameters to use in generating the menu that would be applied to each controller/action or, if the menu is the same on each page, implementing a base controller that fills in the view data by overriding OnActionExecuted and adding to the ViewData in it.
Example (note, you'd probably use caching for the results instead of getting them from the db each time).
Model classes
MenuControl.ascx : of type
System.Web.Mvc.ViewPage<List<Menu>>
MasterPage
BaseController