如何从一个特定页面的布局中删除一个HTML元素
本文关键字:一个 布局 删除 元素 HTML | 更新日期: 2023-09-27 17:50:45
我是ASP新手。. NET MVC,我想知道我应该做什么,如果我的_Layout.cshtml
有一个元素
<div class="navbar navbar-inverse navbar-fixed-top">
...
</div>
,我不想为具有控制器SomePageController.cs
和视图SomePage.cshtml
的特定页面生成。我是否只是将这段HTML封装在if
语句中,如
@if(not on SomePage) {
<div class="navbar navbar-inverse navbar-fixed-top">
...
</div>
}
还是有更合适的方法?
我通常在ViewBag中使用魔法字符串。我在我的控制器中设置它(如果你愿意,你也可以在视图的顶部设置它)。
ViewBag.HideNavBar = true;
@if(ViewBag.HideNavBar == null) {
<div class="navbar navbar-inverse navbar-fixed-top">
...
</div>
}
我一直使用这种策略将选项传递到布局中(例如日期选择器选项)
给不需要<div>
的单个页面一个不同的布局:
@model Foo
@{
Layout = "~/Views/Shared/_LayoutWithoutNavigation.cshtml";
}
<!-- rest of HTML -->
你可以有多种选择
1:简单的技巧…只需使用If条件并从查询字符串中获取路由名称,并将其与您的路由进行匹配。
2:使用两种不同的布局。一个有HTML部分,一个没有HTML部分。当创建视图时,只需指定布局而不需要HTML。
3使用ViewBag/tempData
方法:
:
if(Request.QueryString["routeName"] != "MyRoute" )
{
//Render HTML Part
}
第二:
@{
layout = "~/shared/LayoutWithoutHTML.cshtml";
}
3
在你想要隐藏HTML的控制器
viewBag。HTMLCheck = true;
In your View
if(viewBag.HTMLCheck != true)
{
// Html Part
}
你的解决方案似乎是一个合适的方式去做,但理想情况下,如果它不打算在每个页面上,没有该部分的页面应该使用不同的布局。