ASP.NET MVC: как сделать частичное представление для всех, кроме одного представления? - PullRequest
1 голос
/ 25 апреля 2009

У меня есть частичное представление / пользовательский элемент управления, называемый LogOnUserControl, который я отображаю в боковой панели на моем сайте (определено в Site.Master). У меня также есть отдельное представление LogOn, которое также отображает LogOnUserControl.

Мне не нужны два экземпляра LogOnUserControl в представлении LogOn, потому что это просто сбивает с толку, поэтому в настоящее время я думаю о включении условия, такого как

// Semi-pseudocode
if (!Request.IsAuthenticated) && View.Name != "LogOn")

в LogOnUserControl.

Это кажется неправильным, поскольку частичное представление теперь знает о представлении LogOn. Кроме того, я не могу узнать, как получить имя View, что усиливает ощущение, что я делаю что-то не так! : -)

Редактировать: Существует еще одно осложнение, заключающееся в том, что одно и то же частичное представление используется как для представления входа в систему, так и для боковой панели в Site.Master.

Ответы [ 3 ]

5 голосов
/ 25 апреля 2009

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

3 голосов
/ 25 апреля 2009

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

Bada Bing!

2 голосов
/ 25 апреля 2009

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

<% if (ViewData["HideLogOnUserControl"] == "Y") { %>
    Insert HTML here
<% } else { %>
    Insert HTML here
<% } %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...