Asp.net core mvc ASP.NET核心-Razor未检查程序集中嵌入的视图

Asp.net core mvc ASP.NET核心-Razor未检查程序集中嵌入的视图,asp.net-core-mvc,Asp.net Core Mvc,我正在尝试设置一对.NET Core项目,其中一个是包含ViewComponent的类库,另一个是使用该组件的ASP.NET Core MVC应用程序 我跟随导游来到这里: 然而,我似乎无法让它工作。我不断得到: InvalidOperationException:未打开“组件/测试/默认”视图 建立搜索了以下地点: /视图/Home/Components/Test/Default.cshtml /视图/Shared/Components/Test/Default.cshtml 组件本身: pu

我正在尝试设置一对.NET Core项目,其中一个是包含ViewComponent的类库,另一个是使用该组件的ASP.NET Core MVC应用程序

我跟随导游来到这里:

然而,我似乎无法让它工作。我不断得到:

InvalidOperationException:未打开“组件/测试/默认”视图 建立搜索了以下地点: /视图/Home/Components/Test/Default.cshtml /视图/Shared/Components/Test/Default.cshtml

组件本身:

public class TestViewComponent : ViewComponent
{
    public TestViewComponent()
    {
    }

    public IViewComponentResult Invoke()
    {
        return View();
    }
}
相应的视图(文件路径为Views/Shared/Components/Test/Default.cshtml):

最后,在MVC项目中_Layout.cshtml的底部:

@await Component.InvokeAsync(“测试”)

我通过删除基本名称空间成功地使其工作

添加(新的EmbeddedFileProvider(typeof)(TestViewComponent) .GetTypeInfo().Assembly))


似乎添加基本名称空间并不像预期的那样有效。我真的不知道为什么

我通过删除基本名称空间使它工作起来

添加(新的EmbeddedFileProvider(typeof)(TestViewComponent) .GetTypeInfo().Assembly))


似乎添加基本名称空间并不像预期的那样有效。我真的不知道为什么会出现这个问题,通过将
视图上的
构建操作
属性从
更改为
嵌入式资源
解决了这个问题

  • 解决方案资源管理器中的视图上单击鼠标右键
  • 选择
    属性
  • 构建操作
    更改为
    嵌入式资源
  • 或者,如果要将所有
    视图
    自动添加为
    嵌入式资源
    ,可以将此
    项目组
    添加到
    .csproj
    文件中:


    我遇到了这个问题,通过将
    视图
    上的
    构建操作
    属性从
    更改为
    嵌入式资源
    解决了这个问题

  • 解决方案资源管理器中的视图上单击鼠标右键
  • 选择
    属性
  • 构建操作
    更改为
    嵌入式资源
  • 或者,如果要将所有
    视图
    自动添加为
    嵌入式资源
    ,可以将此
    项目组
    添加到
    .csproj
    文件中:

    
    

    在创建一个带有单个字符串条目的资源文件之前,我遇到了视图未嵌入的问题。您也可以在控制器操作中直接调用标准视图,而不是使用中间ViewComponent。在使用单个字符串条目创建资源文件之前,我遇到了视图未嵌入的问题。也可以在控制器操作中直接调用标准视图,而不是使用中间视图组件。
    <p>Hello from test component</p>
    
    services.Configure<RazorViewEngineOptions>(o =>
    {
        o.FileProviders.Add(new EmbeddedFileProvider(
            typeof(TestViewComponent).GetTypeInfo().Assembly, "Test.Components"));
    });
    
    "buildOptions": {
      "embed": {
        "include": [ "Views" ]
      } 
    },