【问题标题】:MVC3 _Layout.cshtml...disableing/enabling menu itemsMVC3 _Layout.cshtml ...禁用/启用菜单项
【发布时间】:2015-02-09 17:57:05
【问题描述】:

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

【问题讨论】:

  • 导航项是否只在详情页有效?如果我返回索引页面怎么办?

标签: asp.net-mvc-3 layout menu


【解决方案1】:

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

在您的索引页上:

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

<p>Your content below</p>

如果您想在某些条件下呈现菜单,则将菜单存储在局部视图模型中,例如SiteNavigation.cshtml

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

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

【讨论】:

  • @CodeRush....好主意。我喜欢部分渲染。我不知道那是可用的。我也想出了一个解决办法。见下文。谢谢
  • 我认为这是很多人的问题(我猜包括我自己)。他们在不知道有多少工具可供他们使用的情况下加入。
【解决方案2】:

我找到了问题的答案。 @CodeRush 的回答很酷,我将在另一个场景中使用它。但对于我的特殊情况,我喜欢下面的实现。在 Object1Controller Index get Action 中,我添加了以下代码:

ViewBag.Hidden = "hidden";

然后在Details get Action中,也就是在Index视图上点击链接时调用的Action,我添加了这段代码:

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>

呈现为可见

【讨论】:

    猜你喜欢
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    相关资源
    最近更新 更多