MVC - Тот же URL, несколько представлений

Это считают плохой практикой, чтобы иметь несколько представлений для того же URL в MVC, на основе различных пользовательских ролей? Например: http://www.domain.com/ViewProductID/123 покажет "нормальную" страницу продукта для обычного пользователя, и она покажет "расширенное" (статистика продукта, способность отредактировать заголовок и т.д.) версия кому-то вошла в систему как администратор.

Если это - плохая практика, почему? Если хорошо, что лучший способ состоит в том, чтобы реализовать его? 2 отдельных шаблона или 1 шаблон, рассеянный, с если.. еще?

Спасибо!

6
задан Amati 23 March 2010 в 18:25
поделиться

4 ответа

Я думаю, что можно изменить представление в зависимости от контекста; Так происходит все время. Если вы выполняете if .. else или несколько файлов aspx, это действительно зависит от того, насколько много отличается. Пара альтернативных вариантов:

1) использовать Html.RenderAction для вызова действий AdminController для встраивания материала, AdminController может возвращать пустые результаты, если пользователь не является администратором

или, лучше:

2 ) использовать другую главную страницу в зависимости от роли / статуса пользователя. Таким образом, вы можете вытащить логику для установки мастера в фильтр действий, который ему нравится, и сделать это один раз, но применить везде, где это имеет смысл. Просто убедитесь, что альтернативные главные страницы совместимы с представлениями с точки зрения contentplaceholderId.

2
ответ дан 17 December 2019 в 04:44
поделиться

На мой взгляд, можно использовать один и тот же URL-адрес для пользователей и администраторов. реальный вопрос заключается в удобстве использования для ваших пользователей. Это как-то влияет на них? Многие сайты, использующие MVC, предоставляют дополнительный контент или ссылки в зависимости от уровня авторизации.

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

1
ответ дан 17 December 2019 в 04:44
поделиться

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

if can? :create, Users do
  ...
else
  ...
end

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

1
ответ дан 17 December 2019 в 04:44
поделиться

В основном вы говорите о разрешениях, приводящих к разным страницам, что является очень распространенным явлением. Подумайте о целевой странице по умолчанию в Facebook для двух разных людей.

Реализация такая же, как и для всего остального: объедините общие элементы, где вы можете, для повторного использования. Простые различия могут просто уместиться, если… другие, а более сложные различия принадлежат разным шаблонам.

1
ответ дан 17 December 2019 в 04:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: