簡體   English   中英

如何將位於應用程序部分 (DLL) 中的部分視圖呈現到主 asp.net 核心 2.2 項目中

[英]How to render a partial view located in an application part (DLL) into main asp.net core 2.2 project

我有一個asp.net core 2.2項目及其控制器和視圖。 由於項目要求,我需要創建一個 Razor Class 庫來從主項目中分離一些 cshtml 文件和控制器。 查看下面的項目和文件夾結構:

在此處輸入圖像描述

當我需要將位於 Razor Class 庫中的部分視圖加載到位於主項目中的視圖中時,我遇到了問題:

在此處輸入圖像描述

該應用程序拋出 500 錯誤:

處理請求時發生未處理的異常。 InvalidOperationException:未找到局部視圖“_ComponenteDivisionPoliticaPartial”。 搜索了以下位置: /Areas/Administracion/Views/GeneralPersonas/_ComponenteDivisionPoliticaPartial.es-CO.cshtml /Areas/Administracion/Views/GeneralPersonas/_ComponenteDivisionPoliticaPartial.es.cshtml /Areas/Administracion/Views/GeneralPersonas/_ComponenteDivisionPoliticaPartial.cshtml /Areas /Administracion/Views/Shared/_ComponenteDivisionPoliticaPartial.es-CO.cshtml /Areas/Administracion/Views/Shared/_ComponenteDivisionPoliticaPartial.es.cshtml /Areas/Administracion/Views/Shared/_ComponenteDivisionPoliticaPartial.cshtml /Views/Shared/_ComponenteDivisionPoliticaPartial.es-CO .cshtml /Views/Shared/_ComponenteDivisionPoliticaPartial.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.RenderPartialCoreAsync(字符串部分視圖名稱,ZA8C FDE6331BD59EB2AC96F8911C4B666Z model, ViewDataDictionary viewData, TextWriter writer)

  • 如何引用或使用所需的局部視圖?
  • wwwroot中的 static 文件,例如 JS 文件和 CSS 是否被 Razor Z2BD788029FEDDAF6EFE2 庫的部分視圖識別?

謝謝

請注意 Razor class 庫 (RCL) 默認僅支持 Razor 頁面,如果您想支持視圖,則應在創建新 RCL 項目頁面和視圖時選中模板選項“支持項目頁面和視圖

在此處輸入圖像描述

ASP.NET Core 2.2 不支持此功能(在 ASP.NET Core 3.0 中引入),因此出現上述錯誤。

在這個關於“模板更改”的文檔中,您會找到更多詳細信息,如下所示:

Razor class 庫(RCL)模板默認為 Razor 組件開發。 Visual Studio 中的新模板選項為頁面和視圖提供模板支持。 在命令 shell 中從模板創建 RCL 時,傳遞--support-pages-and-views選項 ( dotnet new razorclasslib --support-pages-and-views )。

我找到了一個解決方案:

盡管飛漢提到自 asp.net 核心 3.0 起支持頁面和視圖的事實,但我通過在 asp.net 核心 2.2 中執行以下操作實現了在庫(DLL)中使用視圖和控制器:

我檢查了庫項目的類型:

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

我已經配置了應用程序部分和 razor 視圖引擎選項,以便在 startup.cs 中相應地添加文件提供程序:

        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));
        });

就是這樣,它現在正在運行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM