Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将位于应用程序部件(DLL)中的局部视图呈现到主asp.net core 2.2项目中_C#_Asp.net Core_Razor_Asp.net Core 2.2_Asp.net Core Razor Pages - Fatal编程技术网

C# 如何将位于应用程序部件(DLL)中的局部视图呈现到主asp.net core 2.2项目中

C# 如何将位于应用程序部件(DLL)中的局部视图呈现到主asp.net core 2.2项目中,c#,asp.net-core,razor,asp.net-core-2.2,asp.net-core-razor-pages,C#,Asp.net Core,Razor,Asp.net Core 2.2,Asp.net Core Razor Pages,我有一个带有控制器和视图的asp.net core 2.2项目。由于项目需求,我需要创建一个Razor类库,将一些cshtml文件和控制器与主项目分离。查看项目和文件夹结构的下方: 当我需要将Razor类库中的局部视图加载到主项目中的视图时,我会遇到一些问题: 应用程序抛出500个错误: 处理请求时发生未处理的异常。 InvalidOperationException:未找到部分视图“\u ComponentedVisionPoliticaPartial”。搜索了以下地点: /区域/管理/视

我有一个带有控制器和视图的
asp.net core 2.2
项目。由于项目需求,我需要创建一个Razor类库,将一些cshtml文件和控制器与主项目分离。查看项目和文件夹结构的下方:

当我需要将Razor类库中的局部视图加载到主项目中的视图时,我会遇到一些问题:

应用程序抛出500个错误:

处理请求时发生未处理的异常。 InvalidOperationException:未找到部分视图“\u ComponentedVisionPoliticaPartial”。搜索了以下地点: /区域/管理/视图/通用PERSONAS/_组件edivisionpoliticapartial.es-CO.cshtml /区域/管理/视图/通用PERSONAS/_组件edivisionpoliticapartial.es.cshtml /区域/管理/视图/通用PERSONAS/_组件edivisionpoliticapartial.cshtml /区域/管理/视图/共享/_组件edivisionpoliticapartial.es-CO.cshtml /区域/管理/视图/共享/_组件edivisionpoliticapartial.es.cshtml /区域/administration/Views/Shared/_ComponenteDivisionPoliticaPartial.cshtml /视图/共享/_组件edivisionpoliticapartial.es-CO.cshtml /视图/共享/_组件edivisionpoliticapartial.es.cshtml /Views/Shared/_ComponenteDivisionPoliticaPartial.cshtml /Pages/Shared/_ComponenteDivisionPoliticaPartial.es-CO.cshtml /Pages/Shared/_ComponenteDivisionPoliticaPartial.es.cshtml /Pages/Shared/_ComponenteDivisionPoliticaPartial.cshtml Microsoft.AspNetCore.Mvc.ViewFeatures.HtmlHelper.RenderPartialCoreSync(字符串partialViewName、对象模型、ViewDataDictionary viewData、TextWriter)

  • 如何引用或使用所需的局部视图
  • wwwroot
    中的静态文件(如JS文件和CSS)是否被 Razor类库的部分视图

谢谢

请注意,默认情况下,Razor类库(RCL)仅支持Razor页面,如果您希望支持视图,则在创建新的RCL项目时,应选中模板选项“支持页面和视图”

ASP.NET Core 2.2(在ASP.NET Core 3.0中引入)不支持此功能,因此出现上述错误

在这份关于“模板更改”的文档中,您可以找到以下更详细的信息:


Razor类库(RCL)模板默认为Razor组件开发。VisualStudio中的新模板选项为页面和视图提供模板支持。从命令外壳中的模板创建RCL时,传递
--支持页面和视图
选项(
dotnet new razorclasslib--支持页面和视图
)。

请注意,默认情况下,Razor类库(RCL)中只支持Razor页面,如果您希望支持视图,请传递模板选项创建新的RCL项目时,应选中“支持页面和视图”

ASP.NET Core 2.2(在ASP.NET Core 3.0中引入)不支持此功能,因此出现上述错误

在这份关于“模板更改”的文档中,您可以找到以下更详细的信息:

Razor类库(RCL)模板默认为Razor组件开发。Visual Studio中的新模板选项为页面和视图提供模板支持。在命令shell中从模板创建RCL时,传递
--支持页面和视图
选项(
dotnet新razorclasslib——支持页面和视图)。

我找到了一个解决方案:

尽管Fei Han提到对页面和视图的支持自asp.net core 3.0以来就得到了支持,但我还是通过在asp.net core 2.2中执行以下操作实现了在库(DLL)中使用视图和控制器:

我已检查了库项目的类型:

<Project Sdk="Microsoft.NET.Sdk.Razor">

我在startup.cs中配置了应用程序部分和razor视图引擎选项,以便相应地添加文件提供程序:

        services.ConfigureApplicationPartManager(c => 
            {
                c.ApplicationParts.Add(new AssemblyPart(typeof(ComponenteDivisionPoliticaController).GetTypeInfo().Assembly));
            }
        );

        services.Configure<RazorViewEngineOptions>(options =>
        {
            options.FileProviders.Add(new EmbeddedFileProvider(typeof(ComponenteDivisionPoliticaController).GetTypeInfo().Assembly));
        });
services.ConfigureApplicationPartManager(c=>
{
c、 添加(新的AssemblyPart(typeof(ComponentDivisionPolicyController).GetTypeInfo().Assembly));
}
);
配置(选项=>
{
options.FileProviders.Add(新的EmbeddedFileProvider(typeof(ComponenteDivisionPoliticaController.GetTypeInfo().Assembly));
});
就这样,它现在正在运行

我找到了一个解决方案:

尽管Fei Han提到对页面和视图的支持自asp.net core 3.0以来就得到了支持,但我还是通过在asp.net core 2.2中执行以下操作实现了在库(DLL)中使用视图和控制器:

我已检查了库项目的类型:

<Project Sdk="Microsoft.NET.Sdk.Razor">

我在startup.cs中配置了应用程序部分和razor视图引擎选项,以便相应地添加文件提供程序:

        services.ConfigureApplicationPartManager(c => 
            {
                c.ApplicationParts.Add(new AssemblyPart(typeof(ComponenteDivisionPoliticaController).GetTypeInfo().Assembly));
            }
        );

        services.Configure<RazorViewEngineOptions>(options =>
        {
            options.FileProviders.Add(new EmbeddedFileProvider(typeof(ComponenteDivisionPoliticaController).GetTypeInfo().Assembly));
        });
services.ConfigureApplicationPartManager(c=>
{
c、 添加(新的AssemblyPart(typeof(ComponentDivisionPolicyController).GetTypeInfo().Assembly));
}
);
配置(选项=>
{
options.FileProviders.Add(新的EmbeddedFileProvider(typeof(ComponenteDivisionPoliticaController.GetTypeInfo().Assembly));
});
就这样,它正在运行