MVC - тот же URL, несколько просмотров - PullRequest
6 голосов
/ 23 марта 2010

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

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

Спасибо!

Ответы [ 4 ]

2 голосов
/ 23 марта 2010

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

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

или, что лучше:

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

1 голос
/ 23 марта 2010

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

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

1 голос
/ 23 марта 2010

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

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

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

1 голос
/ 23 марта 2010

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

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

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