2011-10-11 81 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