视图是否可以有选择地填充显示在视图外部的部分 ASP.NET MVC?



我正在用bootstrap和.net core mvc(v3.0(制作一个简单的网站。由于大多数页面都重用引导容器,因此我决定将其放在布局文件中,这样我就不会在任何地方重复相同的设置。

这样做的缺点是,如果视图需要固定元素,则这些元素最终会固定到容器而不是视口。

我想知道是否可以在 view.cshtml 文件中调用某种语法,这可能会导致在 _Layout.cshtml 文件中呈现一个部分(抱歉,如果这个问题已经得到回答,但我不确定要搜索什么(。

例如

_Layout.cshtml

@using Microsoft.Extensions.Hosting
@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment _environment
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"]</title>
</head>
<body>
@* this div only gets rendered based on logic inside the view*@
<div id="conditionalViewDiv">
</div>
<div class="content container-fluid pl-0 pr-0 moveable" id="containerMain">
<main role="main">
@RenderBody()
</main>
</div>
@RenderSection("Scripts", required: false)
</body>
</html>

然后在 SomeView.cshtml 中

@{
ViewData["Title"] = "title";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@MadeUpRenderCommand("conditionalViewDiv")
@*other view stuff*@

感谢您的任何帮助。

根据文档,View 组件适用于具有可重用呈现逻辑的任何位置,类似于分部视图,但它们的功能要强大得多。主要区别在于,当您使用分部视图时,您仍然依赖于控制器,而在视图组件中您不需要控制器。因此,存在关注点的分离。

视图

组件是提供分部视图的 C# 类 与它所需的数据无关,独立于父视图和呈现它的操作。

可以找到很好的启发性例子,特别是:

  • https://www.c-sharpcorner.com/article/working-with-view-components-in-asp-net-core-mvc/
  • https://jakeydocs.readthedocs.io/en/latest/mvc/views/view-components.html

希望这有帮助。

最新更新