You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET中ViewComponent的视图搜索路径规则

ASP.NET Core 视图组件默认视图搜索路径

和普通View()方法的视图搜索逻辑对应,调用Component.InvokeAsync("SomeData")渲染视图组件时,运行时会按优先级从高到低搜索对应位置的.cshtml视图文件。默认情况下搜索的目标视图文件名为Default.cshtml,如果你在视图组件的执行逻辑中手动指定了自定义视图名(比如返回return View("CustomLayout")),会将搜索文件名替换为你指定的名称,目录层级的搜索规则保持不变。

如果你在项目配置中自定义了视图位置格式化器,搜索路径会按照自定义规则调整,以下为默认配置下的搜索顺序:

非区域(Area)通用场景

  • 最高优先级:当前控制器专属组件路径
    路径格式:/Views/{当前触发渲染的控制器名}/Components/{传入的视图组件名}/Default.cshtml
    比如当前在Home控制器下的动作方法中调用该组件,第一个搜索的路径就是/Views/Home/Components/SomeData/Default.cshtml
  • 第二优先级:Views目录全局共享组件路径
    路径格式:/Views/Shared/Components/{传入的视图组件名}/Default.cshtml
    对应例子为/Views/Shared/Components/SomeData/Default.cshtml,所有控制器、视图、页面调用该组件时都会搜索这个全局共享位置
  • 第三优先级:Razor Pages专属共享组件路径
    路径格式:/Pages/Shared/Components/{传入的视图组件名}/Default.cshtml
    对应例子为/Pages/Shared/Components/SomeData/Default.cshtml,项目采用Razor Pages开发模式时,运行时会追加搜索这个路径。

区域(Area)场景额外搜索路径

如果组件渲染触发位置在某个Area下,运行时会在上述通用路径之前,优先搜索对应Area下的专属路径:

  • /Areas/{Area名称}/Views/{当前控制器名}/Components/{视图组件名}/Default.cshtml
  • /Areas/{Area名称}/Views/Shared/Components/{视图组件名}/Default.cshtml

实际场景举例:在Admin区域的User控制器下调用Component.InvokeAsync("SomeData")时,运行时第一个搜索的路径是/Areas/Admin/Views/User/Components/SomeData/Default.cshtml,找不到就继续搜索Admin区域下的共享组件路径,还找不到才会逐层搜索根目录下的通用路径。

内容的提问来源于stack exchange,提问作者Jay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 13:19:07