2010-03-23 5 views
6

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

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

Спасибо!

ответ

2

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

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

или, лучше:

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

+0

+1 Хороший и подробный ответ. – systempuntoout

1

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

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

1

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

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

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

1

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

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

Смежные вопросы