我是ASP.NET MVC的新手,我想知道如果我的_Layout.cshtml有一个元素,我应该怎么做
<div class="navbar navbar-inverse navbar-fixed-top">
...
</div>我不希望使用控制器SomePageController.cs和视图SomePage.cshtml为特定页面生成。我是否只是将这段超文本标记语言封装在if语句中,如下所示
@if(not on SomePage) {
<div class="navbar navbar-inverse navbar-fixed-top">
...
</div>
}或者有没有更合适的方式?
发布于 2015-05-26 23:18:22
为此,我通常在ViewBag中使用一个神奇的字符串。我将其设置在我的控制器中(或者,如果您愿意,也可以在视图的顶部进行设置)。
ViewBag.HideNavBar = true;在_Layout中:
@if(ViewBag.HideNavBar == null) {
<div class="navbar navbar-inverse navbar-fixed-top">
...
</div>
}我总是使用这个策略将选项(比如datepicker选项)传递到布局中。
发布于 2015-05-26 23:12:44
为不需要该<div>的单个页面提供different Layout
@model Foo
@{
Layout = "~/Views/Shared/_LayoutWithoutNavigation.cshtml";
}
<!-- rest of HTML --> 发布于 2015-05-26 23:23:05
你可以通过多种方式来完成
1:简单的技巧..只需使用If条件,从查询字符串中获取路由名称,并将其与您的路由进行匹配即可。
2:使用两种不同的布局。一个包含HTML部件,另一个不包含HTML部件。在创建视图时,只需指定没有HTML的布局即可。
3:使用ViewBag / tempData
方法:
优先:
if(Request.QueryString["routeName"] != "MyRoute" )
{
//Render HTML Part
}second:
@{
layout = "~/shared/LayoutWithoutHTML.cshtml";
}Third
控制器中您想要隐藏
的位置
viewBag.HTMLCheck =真;
视图中的
if(viewBag.HTMLCheck != true)
{
// Html Part
}https://stackoverflow.com/questions/30462358
复制相似问题