.NET Core分部视图PartialView用法
什么时候用用分部视图?
分部视图PartialView是执行下列操作的有效方式:
将大型标记文件分解为更小的组件。
在由多个逻辑部分组成的大型复杂标记文件中,在分部视图中处理隔开的每个部分是有利的。 标记文件中的代码是可管理的,因为标记仅包含整体页面结构和对分部视图的引用。
减少跨标记文件中常见标记内容的重复。
当在标记文件中使用相同的标记元素时,分部视图会将重复的标记内容移到一个分部视图文件中。 在分部视图中更改标记后,它会更新使用该分部视图的标记文件呈现的输出。
不应使用分部视图来维护常见布局元素。 常见布局元素应在 _Layout.cshtml 文件中指定。
请勿使用需要复杂呈现逻辑或代码执行来呈现标记的分部视图。 使用视图组件而不是分部视图。
在页面中使用分部视图
直接使用partial标签
<partial name="_PartialName" />
//当存在文件扩展名时,标记帮助程序会引用分部视图,该视图必须与调用分部视图的标记文件位于同一文件夹中:
<partial name="_PartialName.cshtml" />
<partial name="~/Pages/Folder/_PartialName.cshtml" />
<partial name="../Account/_PartialName.cshtml" />
Html.PartialAsync()使用分部视图
@await Html.PartialAsync("_PartialName")
//当存在文件扩展名时,HTML 帮助程序会引用分部视图,该视图必须与调用分部视图的标记文件位于同一文件夹中:
@await Html.PartialAsync("_PartialName.cshtml")
@await Html.PartialAsync("~/Pages/Folder/_PartialName.cshtml")
分部视图发现
如果按名称(无文件扩展名)引用分部视图,则按所述顺序搜索以下位置:
Razor 页面
当前正在执行页面的文件夹
该页面文件夹上方的目录图
/Shared
/Pages/Shared
/Views/Shared
MVC
/Areas/<Area-Name>/Views/<Controller-Name>
/Areas/<Area-Name>/Views/Shared
/Views/Shared
/Pages/Shared
以下约定适用于分部视图发现:
当分部视图位于不同的文件夹中时,允许使用具有相同文件名的不同分部视图。
当按名称(无文件扩展名)引用分部视图且分部视图出现在调用方的文件夹和 文件夹中时,调用方文件夹中的分部视图会提供分部视图。 如果调用方文件夹中不存在分部视图,则会从 文件夹中提供分部视图。 文件夹中的分部视图称为“共享分部视图”或“默认分部视图”。
分部视图可以 链接,如果循环引用不是由调用构成,分部视图可以 — 调用另一分部视图。 相对路径始终相对于当前文件,而不是相对于文件的根视图或父视图。
PartialView传递数据示例
在Pages/Partial目录下创建分部视图_List.cshtml
@model IndexModel
<ul>
<li>@Model.H1</li>
</ul>
在Index.cshtml中使用分部视图
@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
<partial name="~/Pages/Partial/_List.cshtml" for="@Model" />
@await Html.PartialAsync("~/Pages/Partial/_List.cshtml", Model)
更新于:2个月前相关文章
- ASP.NET如何将Views文件夹从项目分离
- .NET C# 读取编辑.AVIF图片文件
- .NET C# SkiaSharp读取.AVIF图片文件报错
- .NET开源ORM FreeSql常见问题和解决方法
- 微软于发布了.NET 9 Release Candidate 2 提高整体质量
- 分享5个开源的.NET Excel读写操作库
- .Net Core中Dapper的使用详解
- ASP.NET 使用Entity Framework (EF) 创建迁移修改SQLite数据库表结构
- 如何从.NET Framework迁移到.NET Core或.NET 6/7?
- 如何优化ASP.NET Core应用的性能?
- 10款.NET开发中推荐的代码分析和质量工具
- .NET9 Blazor有哪些更新?
- 在Docker、Kubernetes环境下部署.NET应用的最佳实践
- .NET 游戏开发框架有哪些?
- PluginCore 基于 ASP.NET Core 的轻量级插件框架
- .NET C# EntityFramework(EF)连接SQLite代码示例
- Sylvan.Data.Excel 性能优异的开源.NET Excel数据读取库
- ASP.NET Core 中常用的内置中间件
- .NET9 F#有什么新特性?
- .NET 开源 ORM FreeSql 使用教程