如何根据 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 中的控制器隐藏共享布局中的元素的主要内容,如果未能解决你的问题,请参考以下文章