【发布时间】:2022-01-17 02:07:09
【问题描述】:
我有一个 Razor Pages 项目(无控制器),其结构如下:
从主要的Index.cshtml,我会根据主题名称呈现其内容的部分视图,例如:
@* Default will be replaced with theme name *@
<partial name="Themes\Default\HomeContent" />
在HomeContent.cshtml 中,我想在其文件夹中呈现许多其他部分视图。但是这行不通:
<p>Content</p>
<partial name="_DefaultThemePartial" />
引擎只搜索这些位置(正确的according to the documentation):
InvalidOperationException:部分视图“_DefaultThemePartial”是 未找到。搜索了以下位置:
/Pages/_DefaultThemePartial.cshtml
/Pages/Shared/_DefaultThemePartial.cshtml
/Views/Shared/_DefaultThemePartial.cshtml
我也尝试过<partial name="./_DefaultThemePartial" /> 或<partial name=".\_DefaultThemePartial" /> 或尝试将它们放在名为Shared 的子文件夹中(在默认文件夹中)。它们都不起作用,只搜索了上述 3 个位置。
有没有在不指定完整路径的情况下渲染这些部分?
【问题讨论】:
-
为什么不想给出完整路径?
-
@PoulBak 将来可能会改变,重复硬字符串路径不是一个好主意。
-
您可能会更改路径以使用变量,您可以在某处全局定义该变量。不理想,但如果需要,您只需更改一个值。
-
@PoulBak 是的,如果没有更好的解决方案,那是我想到的一件事。最后我认为这不值得,我只是使用我创建的
LocationExpander
标签: c# .net asp.net-mvc razor .net-6.0