ASP MVC 3 - 如何拦截所有动作呈现以有条件地添加html“类”?

时间:2011-09-02 21:54:01

标签: asp.net-mvc asp.net-mvc-3 razor

我想知道拦截插入条件html类所呈现的所有操作的最佳方法是什么。

我有很多情况会有用,但想想一个访问控制系统,当前用户无法访问某些操作,并且可以很好地更改或添加一个类到所有呈现的匹配此拒绝的URL动作,禁用它们或使用任何类型的视觉效果告诉用户这些链接无法访问(当然,我们只讨论视觉指示器,因为如果真正访问这些动作将返回权限被拒绝)。

我认为一种方法是制作一个应该被所有程序员使用的html帮助器,因此这个帮助器会使“class id”有条件地匹配呈现给当前用户允许的操作的每个动作。但是在这种方法中,我们需要委托所有程序员使用这个html帮助程序而不是其他帮助程序。

嗯,有人有其他建议吗?如果我们能够在不依赖于所有程序员实践的情况下在编写视图时使用特定的html帮助程序,那就太好了。

问候。


尽管可以在最低级别的ASP MVC中拦截html渲染,即使是ASP.NET的根源,我也认为最合适的地方就是使用自定义的html帮助程序。不幸的是,我们依赖所有其他程序,从不在这个项目中使用其他帮助程序。

使用自定义的html帮助器渲染比拦截渲染,解析并编辑它更容易。

好吧,如果有人有任何建议,请告诉我们。

2 个答案:

答案 0 :(得分:1)

  

我认为一种方法是制作应该使用的html助手   所有程序员,所以这个帮助器将呈现“类ID”   有条件地将每个动作与允许的动作相匹配   对于当前用户。

实际上这是一个很棒的方式。这正是我要做的:一个自定义HTML帮助器方法来呈现这些链接。然后在你的观点中:

@Html.AuthorizedActionLink("linkText", "action", new { id = "123" })

答案 1 :(得分:0)

我主要担心的是,您如何告诉HtmlHelper使用此规则是否合适?

这打破了HtmlHelper应该关注的问题。

Darin刚刚发布了我的建议,创建了自己的HtmlHelper或添加了自己的扩展方法。

编辑:微软有一个很好的链接:

http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs