首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从特定页面的布局中删除HTML元素?

如何从特定页面的布局中删除HTML元素?
EN

Stack Overflow用户
提问于 2015-05-26 23:07:36
回答 4查看 3.7K关注 0票数 1

我是ASP.NET MVC的新手,我想知道如果我的_Layout.cshtml有一个元素,我应该怎么做

代码语言:javascript
复制
<div class="navbar navbar-inverse navbar-fixed-top">
   ...
</div>

我不希望使用控制器SomePageController.cs和视图SomePage.cshtml为特定页面生成。我是否只是将这段超文本标记语言封装在if语句中,如下所示

代码语言:javascript
复制
@if(not on SomePage) {
    <div class="navbar navbar-inverse navbar-fixed-top">
       ...
    </div>
}

或者有没有更合适的方式?

EN

回答 4

Stack Overflow用户

发布于 2015-05-26 23:18:22

为此,我通常在ViewBag中使用一个神奇的字符串。我将其设置在我的控制器中(或者,如果您愿意,也可以在视图的顶部进行设置)。

代码语言:javascript
复制
ViewBag.HideNavBar = true;

在_Layout中:

代码语言:javascript
复制
@if(ViewBag.HideNavBar == null) {
    <div class="navbar navbar-inverse navbar-fixed-top">
       ...
    </div>
}

我总是使用这个策略将选项(比如datepicker选项)传递到布局中。

票数 2
EN

Stack Overflow用户

发布于 2015-05-26 23:12:44

为不需要该<div>的单个页面提供different Layout

代码语言:javascript
复制
@model Foo
@{
    Layout = "~/Views/Shared/_LayoutWithoutNavigation.cshtml";
}

<!-- rest of HTML --> 
票数 1
EN

Stack Overflow用户

发布于 2015-05-26 23:23:05

你可以通过多种方式来完成

1:简单的技巧..只需使用If条件,从查询字符串中获取路由名称,并将其与您的路由进行匹配即可。

2:使用两种不同的布局。一个包含HTML部件,另一个不包含HTML部件。在创建视图时,只需指定没有HTML的布局即可。

3:使用ViewBag / tempData

方法:

优先:

代码语言:javascript
复制
if(Request.QueryString["routeName"] != "MyRoute" )
{
   //Render HTML Part
}

second:

代码语言:javascript
复制
@{
 layout = "~/shared/LayoutWithoutHTML.cshtml";
}

Third

控制器中您想要隐藏

的位置

viewBag.HTMLCheck =真;

视图中的

代码语言:javascript
复制
if(viewBag.HTMLCheck != true)
{
  // Html Part
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30462358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档