2009-11-06 2 views
1

Я хочу создать общий элемент управления, где я хочу сгенерировать разметку в соответствии с ролью зарегистрированного пользователя. Для этого мне нужно вызвать метод в классе модели. Это правильный способ сделать это в ASP.NET MVC, поскольку я слышал, что мы должны строго выделять Model и Views. Пожалуйста, помогите.Крит общий вид с использованием метода модели

ответ

0

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

Именно поэтому ASP.NET MVC имеет концепцию строго типизированного вида, где виды могут быть строго привязаны к определенному типу модели.

Как таковая, я не вижу проблем с подключением View к члену класса Model.

0

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

Вы можете использовать «asp: loginview» и отобразить частичные виды отсюда? Элементы управления ASP.NET, которые не полагаются на viewstate, отлично работают в MVC.

Пример:

<asp:LoginView id="LoginView1" runat="server"> 
       <RoleGroups> 
        <asp:RoleGroup Roles="Admin"> 
         <ContentTemplate> 
          <%= Html.RenderPartial("MyPartial"); %> 
         </ContentTemplate> 
        </asp:RoleGroup> 
       </RoleGroups> 
      </asp:LoginView> 
1

На мой взгляд, View не должен знать, что такое роль должны видеть. Это функция контроллера. Точно так же Модель не должна относиться к тому, как View использует свою информацию.

Итак, вот как я его проектирую.

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

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

0

В MVC Futures у вас также есть Html-помощник RenderAction, который позволяет вашему зрителю звонить и действовать, а затем отображает результат этого действия в пределах собственной маркировки.

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

Но лучший способ использовать будет зависеть от html, который вам нужно вывести, где вам нужно вывести его и почему. Если бы вы могли рассказать нам немного больше о Html, который вам нужно сделать, и его цель была бы хорошей, и мы можем вам помочь.

Но одно можно сказать точно, что модели не должны выводить Html для рендеринга.

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