2009-08-31 5 views
2

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

Вместо того, чтобы получать Пользователь в каждой модели, есть ли способ легко использовать данные пользователя все время? То есть должен ли я создать базовую модель или иметь некоторый «главный» контроллер, который передает пользователя через ViewData?

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

ответ

4

Это отличная идея. Я использую MasterModel последовательно во всех моих проектах MVC.

Для этого вам необходимо подклассифицировать все ваши модели просмотра, а также сильно набрать MasterPage для MasterModel.

public class MasterModel 
{ 
    string UserName { get; set; } 
} 

public class HomeModel : MasterModel 
{ 
} 

public class NewsModel : MasterModel 
{ 
} 

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<MasterModel>" %> 

User name: <%= Model.UserName %> 
+1

+1 Я не могу представить, сколько боли я бы прошел, не имея этого. – kemiller2002

+0

Фантастический, делает жизнь намного проще. –

0

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

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