我到处都在寻找这个不那么古老的问题的优雅解决方案。如何在ASP.Net MVC View 中锁定表单元素,而又不添加if ... then逻辑?
理想情况下,来自OnAuthorization或OnResultExecultion的BaseController将检查呈现表单元素,并根据角色和作用域隐藏/不呈现它们。
我考虑过的另一种方法是编写某种自定义属性,以便与我们如何使用[Authorize]锁定ActionResults保持一致。如果不将隐藏对象列表传递给 View 并将if结束,这是否有可能?

其他背景信息:我们将拥有一个数据库,该数据库将在执行时(基于用户角色/范围)告诉我们哪些元素将被隐藏。我们正在将MVC3与Razor Viewengine一起使用。我们正在利用BaseController,在其中可以重写任何Controller方法。

在这方面的任何帮助将不胜感激!

最佳答案

您可以使用多种不同的方法:

  • 根据操作过滤器或 Controller 中的条件,将用户发送到其他 View (仅显示 View )。
  • 在字段的基础上,您可以将逻辑构建到编辑器模板中,以基于角色/权限读取自定义数据注释。
  • 您可以构建HTML帮助器来处理逻辑并呈现适当的局部 View ,css类或文本。

  • 欲了解更多信息:
  • How much logic is allowed in ASP.NETMVC views?
  • ASP.NET MVC 2 Templates, Part 1: Introduction(包括5个部分,非常有用,是开始开发自己的编辑器模板的好地方)
  • 关于asp.net-mvc - 如何在没有逻辑的情况下基于安全性在Razor View 上隐藏特定元素?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5540214/

    10-11 23:34
    查看更多