2011-10-11 54 views
2

我有一个MVC3 C#.Net项目。当我最初加载我的网站时,我想要路由到索引页面,并在屏幕顶​​部禁用导航选项卡,直到做出选择。选择完成后,该网站将转到详细信息页面。然后我想启用导航菜单。我怎样才能做到这一点?传递一个ViewBag?不知道MVC3 _Layout.cshtml ...禁用/启用菜单项

+0

是导航项目只有详细信息页面上是否有效?如果我回到索引页面怎么办? – itsmatt

回答

2

我找到了我的问题的答案。 @ CodeRush的答案很酷,我将在另一种情况下使用。但我喜欢下面的实施,以了解我的实际情况。在Object1Controller指数得到行动,我添加了下面的代码:

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

我认为问题是索引页不遵循网站其余部分的布局,因此索引页不应该使用主布局。

在你的索引页:

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

<p>Your content below</p> 

如果你想呈现一些条件的菜单,然后存放在局部视图模式菜单,例如SiteNavigation.cshtml

然后,您可以根据某些条件渲染此视图。例如。

@if(true){ 
    @{ Html.RenderPartial("SiteNavigation"); } 
} 
+0

@CodeRush ....很酷的想法。我喜欢部分渲染。我不知道这是可用的。我也想出了一个解决方案。见下文。谢谢 – MikeTWebb

+0

我认为这是很多人的问题(包括我自己)。他们不知道有多少工具可以使用。 – 2011-10-11 16:39:48