如何在 ASP.NET 3.5 MVC 应用程序中动态添加菜单项到母版页
我想根据会员安全登录角色动态地将菜单项添加到我的主页。 根据我在母版页 html 中读到的 RenderAction 也许可以做到这一点。 因为我正在摸索这个问题,所以我不确定它会是什么样子以及如何在控制器中检查我当前的角色。 我正在考虑创建一个表并将允许的菜单项与角色关系相关联,以便我可以传递到母版页以呈现动态菜单项。
I want to dynamically add menuitems to my master page based on membership security login role. From what I've read RenderAction in the master page html could perhaps do this. Since I'm fumbling thru this I am not sure how it would look and how in the controller I check my current role. I am considering creating a table and relating the allowable menu items to role relationship so I can pass to the master page for rendering the dynamic menu items.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果这些“角色”是 ASP.NET 成员资格角色,则您可以使用带有 RoleGroup 标记的常规 LoginView 控件。 我发现它在 MVC 中工作得很好。 如果“角色”有所不同(例如,模型中的某些内容),则执行 Haacked 所写的操作。
If these "roles" are ASP.NET Membership roles, then you can use the regular LoginView control with the RoleGroup tag. It works fine in MVC, I've found. If the "roles" are something different (e.g., something in your model), then do what Haacked writes.
我不确定这是否是您要找的,但几周前我有一个同样的问题:
卡在创建“安全修剪”html.ActionLink 扩展方法
这允许我在母版页(或任何其他页面)中扩展一个菜单,控制对通过 Authorize 属性的菜单项:
这是 我的代码来执行此操作。
I'm not sure if this is what you are looking for, but I had a question along the same lines a few weeks ago:
Stuck creating a "security trimmed" html.ActionLink extension method
This allowed me to extend a menu in the master page (or any other page) controlling the access to the menu items through the Authorize attribute:
Here is my code to do this.
在控制器中,我将创建一个 MenuModel 类或类似的类,这是菜单的模型。 这将是一个仅数据的类。 在控制器中创建并填充它,同时考虑当前用户的访问权限。 这将允许您编写单元测试来确保您的安全代码正确。
然后我会通过 ViewData 将其传递给视图。 我会将其与知道如何基于 MenuModel 类呈现菜单的辅助方法结合起来。
In the controller, I would create a MenuModel class or the like, that is the model for your menu. It would be a data only class. Create and populate it in the controller, taking into consideration the current user's access permissions. This will allow you to write unit tests that ensure your security code is correct.
Then I'd pass that to the view via ViewData. I'd combine that with a helper method that knows how to render the menu based on the MenuModel class.