如何在OrchardCore主题的layout.cshtml视图中引用并渲染局部视图
问题原因与解决步骤
1. partial标签直接输出源码的问题
该问题是因为你的主题视图没有引入Razor标签助手配置,导致<partial>标签没有被解析,直接作为普通HTML输出到页面。
解决方法:
在主题项目的Views目录下新增/编辑_ViewImports.cshtml文件,添加以下配置:
// 引入ASP.NET Core内置标签助手,包含partial标签的解析逻辑 @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers // 引入OrchardCore专属标签助手(可选,推荐添加以支持Orchard内置功能) @addTagHelper *, OrchardCore.DisplayManagement @addTagHelper *, OrchardCore.ResourceManagement
配置完成后partial标签即可正常生效。
2. 局部视图找不到的问题
从报错的搜索路径可以看出,Razor默认只会在Views/Shared、当前控制器对应视图目录下搜索局部视图,你将_MyPartial.cshtml放在主题Views根目录下,不在默认搜索路径内,所以会触发找不到的报错,有两种解决方案可选:
方案A:调整文件存储位置
将_MyPartial.cshtml移动到主题的Views/Shared目录下,之后即可直接通过名称调用:
<partial name="_MyPartial" />
或者
@await Html.PartialAsync("_MyPartial")
方案B:调用时填写完整路径
不想调整文件位置的话,调用时传入主题内的完整相对路径即可:
<partial name="~/TheExperimentalTheme/Views/_MyPartial.cshtml" />
或者
@await Html.PartialAsync("~/TheExperimentalTheme/Views/_MyPartial.cshtml")
额外注意事项
如果是线上部署场景,需要确认主题的.csproj文件中已将Views目录下的.cshtml文件设置为嵌入式资源,或者已启用Razor运行时编译,避免部署后出现视图找不到的问题。
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

