gpt4 book ai didi

asp.net-core-mvc - asp.net 核心将数据从内容页面传递到布局

转载 作者:行者123 更新时间:2023-12-05 01:00:58 25 4
gpt4 key购买 nike

我正在尝试设置一个主 layout.cshtml 页面,该页面对除一两个页面(通常是登录和注销)之外的所有页面都有效。在我的布局中,我想显示一些我不想为这些特殊页面显示的元素。

我已经看到部分 View 和部分,它们似乎都以我想要的方式“向后”工作 - 在这种情况下,我希望默认为“显示所有元素”,但对于特殊页面,我想成为能够关闭元素。

我已经看到以前的代码使用 PageData 将变量传递给布局(这似乎非常有用,因为我可以在相关页面中添加一个 bool 并在布局中检查它)但这似乎已被删除。有没有其他方法可以在不涉及 Controller 或更新每个页面以显示我想要隐藏在仅 1 页上的位的情况下工作?

最佳答案

您可以通过多种不同的方式实现这一目标。如果您只想“关闭”页面的某个区域,最简单的方法可能是使用 ViewData。比如:

_Layout.cshtml

@if (ViewData["ShowThis"] as bool? ?? true)
{
<!-- HTML here -->
}

如果未定义 ViewData 键,这将导致它默认为 true(显示 HTML),因此在您要禁用它的 View 中,你只需要将它定义为 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-core-mvc - asp.net 核心将数据从内容页面传递到布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47993010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com