如何根据 MVC 中的控制器隐藏共享布局中的元素

Posted

技术标签:

【中文标题】如何根据 MVC 中的控制器隐藏共享布局中的元素【英文标题】:How do I hide an element in the shared layout based on the controller in MVC 【发布时间】:2015-03-31 08:04:37 【问题描述】:

我的页面主页顶部有一个引导导航栏,里面是一个文本输入。我希望它隐藏起来,直到执行搜索并且用户在 results 控制器中看到结果。

这是在我的引导导航栏中。

<input type="text" class="form-control" placeholder="Search">

例如:

Hidden:  www.example.com/home/index
Visible: www.example.com/results

【问题讨论】:

一种可能的选择是为ViewBag 赋值并根据其值包含/排除html - @if(ViewBag.CanDisplay) .. 既然您的navbar 在主/布局页面上...为什么不检查那里的条件并相应地显示输入。 如何检查母版页/布局上的条件? 所以这与引导程序本身无关,问题是两部分。 1. 如何将信息从控制器传递到共享布局,2 如何根据属性切换元素的可见性。到目前为止,您对其中任何一个都做了什么尝试? 我目前正在使用@if(ViewBag.CanDisplay) 隐藏数据 【参考方案1】:

在这种情况下,您实际上不需要将任何特定信息从控制器传递到共享布局。

共享布局可以检查当前路线并做出相应的行为。

@if (ViewContext.RouteData.Values["Controller"].ToString() == "results")

    <input type="text" class="form-control" placeholder="Search">

更多信息

Passing data to Master Page in ASP.NET MVC Get Current View's Url with HtmlHelper in ASP.NET MVC 3 How to show/hide an area within Razor View in ASP.NET MVC programmatically

【讨论】:

以上是关于如何根据 MVC 中的控制器隐藏共享布局中的元素的主要内容,如果未能解决你的问题,请参考以下文章

MVC系列-4.布局页

从 ASP.NET MVC 5 中的控制器 ActionResult 更改 html 元素样式

视图中的 MVC 5 枚举 - 隐藏单个元素

自动布局中的 UIButton 动态宽度

如何根据数组中的最后一个索引隐藏元素?

如何使div中的图片自适应宽度和高度,图片不变形,可以超出div,超出部分隐藏