MVC Просмотров | Как * ВЫ * справляетесь со Сценариями IsAuthenticated? - PullRequest
4 голосов
/ 31 марта 2009

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

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

Мой вопрос такой. Вы разделяете эту обязанность между двумя разными взглядами? Одно представление загружается для «обычных» пользователей, другое - для пользователей-владельцев. Представление, которое видят обычные пользователи, просто показывает данные. Владелец видит данные и некоторые инструменты для управления ими.

Или вы выполняете проверки в одном представлении и скрываете / отображаете блоки в нем (аналогично тому, что вы делали в обычном ASP.NET)?

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

Ответы [ 4 ]

5 голосов
/ 31 марта 2009

Я бы тоже выбрал вариант с одним просмотром. Предоставит конкретные свойства в ваших viewdata, чтобы указать, что делать.

<% if (Model.IsOwner) { %>
    //Html for owner
<% } %>
1 голос
/ 31 марта 2009

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

Технически (или в отношении паттерна MVC) я не могу придумать причин для его разделения.

0 голосов
/ 10 октября 2012

Я обычно хожу за рендеринг дополнительного контента в частичном с условной логикой в ​​частичной проверке ролей перед рендерингом:

<%-- Master Page --%>
<% Html.RenderPartial("DataOwnerStuff"); %>

<%-- Partial --%>
<% if(Roles.IsUserInRole("DataOwner")) { %>
    <h1>Hi Data Owner!</h1>
<% } %>
0 голосов
/ 03 апреля 2009

Я был бы склонен разбить представление на кратные, так как в идеале вы хотите избежать условной логики в представлении (читай: в идеале).

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

...