“管理员”的站点导航ASP.NET MVC 中的应用

发布于 2024-08-02 17:56:02 字数 528 浏览 9 评论 0原文

我为我的 ASP.NET MVC 应用程序创建了一个名为“Admin”的区域项目。

这将包含站点管理部分的所有逻辑,用户可以在其中添加/删除页面等。

顶部有一个菜单,其中包含用户可以管理的内容。 (例如“内容”,“用户”等)

对于其中每一个,我正在制作一个控制器(“ContentController”,“UsersController”等)

我想知道如何设置导航,因为似乎有不同的接近。

一种方法是使用 MvcSiteMap,其中涉及创建“.sitemap”文件并使用“MvcSiteMapNode”属性装饰控制器上的操作。

上面的问题是实现起来很复杂(特别是在 Area 项目中,因为 Areas 在 ASP.NET MVC 中的工作方式)。这似乎也有点矫枉过正。

我想出了一种不同的方法,即用我自己的属性来装饰每个控制器。然后我有一个辅助方法,它通过使用反射循环遍历每个控制器来呈现我的导航,挑选出具有该属性的控制器,然后将它们添加到导航菜单中。

对于以上的方法,你有什么看法呢?你能想出一种更简单的方法吗?

I've made an Area project for my ASP.NET MVC application called 'Admin'.

This will contain all the logic for the Administration section of the site, where the users can add/remove pages, etc.

There's a menu at the top, of things the user can manage. (E.g. 'Content', 'Users', etc)

For each of these, I'm making a controller ('ContentController', 'UsersController', etc)

I'm wondering how to setup the navigation, as there seem to be varying approaches.

One approach is to use MvcSiteMap, which involves creating a '.sitemap' file and decorating actions on my controllers with an 'MvcSiteMapNode' attribute.

The problem with the above is that it's complicated to implement (especially in an Area project, because of the way Areas work in ASP.NET MVC). It also seems like overkill.

I've come up with a different way, which is to decorate each controller with my own attribute. Then I have a helper method that renders my navigation by using reflection to loop through every controller, pick out the ones that have that attribute, and then add them to the navigation menu.

What are your thoughts on the above method? Can you think of an even simpler way of doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

|煩躁 2024-08-09 17:56:02

所以我按照自己的方式完成了 - 每个控制器上的一个属性,然后是一个静态方法,该方法读取应用程序启动时的所有属性(使用反射)并将它们保存在内存中。

到目前为止,这一切都很完美,而且我不需要 MvcSiteMap 的任何高级功能。

So I've done it my way - an attribute on each controller, then a static method that reads all the attributes on application start (using reflection) and keeps them in memory.

So far this has worked perfectly, and I haven't needed any of the advanced features of MvcSiteMap.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文