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