ASP MVC 3 - Как перехватить все действия рендеринга, чтобы добавить условно HTML "класс"? - PullRequest
0 голосов
/ 03 сентября 2011

Я хотел бы знать, как лучше всего перехватить все выполняемые действия для вставки условного HTML-класса.

У меня много ситуаций, когда это будет полезно, но подумайте о системе контроля доступа, в которой текущий пользователь не может получить доступ к некоторым действиям, и было бы неплохо изменить или добавить класс для всех отображаемых URL, который соответствует этому запрещенному действия, отключение их или использование каких-либо визуальных эффектов, чтобы сообщить пользователю, что эти ссылки недоступны (разумеется, речь идет только о визуальных индикаторах, потому что эти действия будут возвращать разрешение, в котором отказано, если он действительно доступен).

Я думаю, что одним из способов было бы создать помощник html, который должен использоваться всеми программистами, поэтому этот помощник отобразил бы "идентификатор класса", условно соответствующий каждому действию, отображаемому действиям, разрешенным текущему пользователю. Но при таком подходе нам нужно поручить всем программистам использовать этот помощник html вместо других помощников.

Ну, у кого-нибудь есть другие предложения сделать это? Было бы неплохо, если бы мы могли это сделать, не прибегая к зависимости от практики всех программистов использования конкретного помощника html при кодировании представлений.

Привет.


Хотя возможно перехватить рендеринг html на самом низком уровне ASP MVC, даже на корнях ASP.NET, я также думаю, что наиболее подходящим местом для этого будет настроенный помощник html. К сожалению, мы зависим от всех других программ, чтобы никогда не использовать других помощников в этом проекте.

Рендеринг с настроенным помощником html намного проще, чем перехватывать рендеринг, анализировать и редактировать его.

Ну, если у кого-то есть предложения, пожалуйста, сообщите нам.

Ответы [ 2 ]

1 голос
/ 03 сентября 2011

Я думаю, что одним из способов было бы создать помощник HTML, который должен использоваться все программисты, поэтому этот помощник будет отображать "идентификатор класса" условное сопоставление каждого действия с разрешенными действиями текущему пользователю.

На самом деле это отличный способ. Это именно то, что я бы сделал: пользовательский вспомогательный метод HTML для рендеринга этих ссылок. А потом в твоих взглядах:

@Html.AuthorizedActionLink("linkText", "action", new { id = "123" })
0 голосов
/ 03 сентября 2011

Моя главная проблема состоит в том, как бы вы сказали HtmlHelper, что уместно использовать это правило или нет?

Это снимает опасения, которые должны быть связаны с HtmlHelper.

Даринтолько что опубликовал мое предложение, создайте свой собственный HtmlHelper или добавьте к нему свои собственные методы расширения.

Редактировать: Microsoft имеет хорошую ссылку по этому поводу:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...