asp.net核心从内容页面传递数据到布局
我试图设置一个主页面layout.cshtml,该页面除了一个或两个(通常是登录和注销)以外的所有页面一致地工作。在我的布局中,我想展示一些我不希望为这些特殊页面显示的元素。asp.net核心从内容页面传递数据到布局
我已经看过部分视图和部分,它们似乎都以我想要的方式“向后”工作 - 在这种情况下,我希望默认为“显示所有元素”,但对于我想要的特殊页面能够关闭一个元素。
我以前见过使用PageData将变量传递给布局的代码(这看起来非常有用,因为我可以在相关页面中打一个布尔并在布局中检查它),但是这似乎已被删除。有没有其他的方式工作,而不涉及控制器或更新每一页来显示我想隐藏在1页上的位?
回答:
有很多不同的方法可以实现这一点。如果您只想“关闭”页面的某个区域,最简单的方法可能是ViewData
。喜欢的东西:
_Layout.cshtml
@if (ViewData["ShowThis"] as bool? ?? true) {
<!-- HTML here -->
}
这将导致其默认为true
(显示HTML)如果ViewData
关键是没有定义,那么在随后的意见要禁用它,你只需将它定义为false
:
SomeView.cshtml
@{ ViewData["ShowThis"] = false;
}
或者,您可以使用部分。这将使您可以选择用其他方式替换HTML。
_Layout.cshtml
@if (!IsSectionDefined("Foo")) {
<!-- HTML here -->
}
else
{
@RenderSection("Foo", required: false)
}
然后,在你看来,你只需定义部分。如果你想显示什么,你可以把它定义为空:
SomeView.cshtml
@section Foo {}
或者你可以可以居然把东西在里面,以取代区域:
@section Foo {
<!-- alternate HTML here -->
}
以上是 asp.net核心从内容页面传递数据到布局 的全部内容, 来源链接: utcz.com/qa/265330.html