MVC3 _Layout.cshtml ... отключение / включение пунктов меню - PullRequest
2 голосов
/ 11 октября 2011

У меня есть проект MVC3 C # .Net.Когда я первоначально загружаю свой веб-сайт, я хочу направить на страницу индекса и отключить навигационные вкладки в верхней части экрана, пока не будет сделан выбор.После того, как выбор сделан, сайт переходит на страницу с подробностями.Затем я хотел бы включить элементы меню навигации.Как я могу это сделать?Передать ViewBag вокруг?Не уверен

Ответы [ 2 ]

2 голосов
/ 11 октября 2011

Я нашел ответ на свой вопрос. Ответ @ CodeRush классный, который я буду использовать в другом сценарии. Но мне нравится реализация, ниже, для моей ситуации. В Object1Controller Index get Action я добавил следующий код:

ViewBag.Hidden = "hidden";

Затем в Подробности получения действия, которое вызывается при нажатии ссылки в представлении индекса, я добавил этот код:

ViewBag.Hidden = "visible";

Затем в _Layout.cshtml я добавил этот код:

 <li style="visibility: @ViewBag.Hidden">@Html.ActionLink("About", "About", "Home")</li>

Что отображается как:

<li style="visibility: hidden"><a href="/Home/About">About</a></li>

или

<li style="visibility: visible"><a href="/Home/About">About</a></li>

В других контроллерах мне не нужно устанавливать свойство ViewBag.Hidden, поскольку по умолчанию для атрибута видимости «видимый». Для других контроллеров ViewSource показывает:

<li style="visibility: "><a href="/Home/About">About</a></li>

Который отображается как видимый

2 голосов
/ 11 октября 2011

Мне кажется, проблема в том, что страница указателя не соответствует макету остальной части веб-сайта, поэтому страница указателя не должна использовать основной макет.

На вашей странице указателя:

@{
    ViewBag.Title = "Index page";
    // Null or a custom layout
    Layout = null;
}

<p>Your content below</p>

Если вы хотите визуализировать меню при каких-либо условиях, сохраните меню в модели с частичным представлением, например, SiteNavigation.cshtml

Затем вы можете визуализировать это представление на основе некоторых условий. Например.

@if(true){
   @{ Html.RenderPartial("SiteNavigation"); }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...