簡體   English   中英

在.Net Framework 項目中使用帶有部分視圖的 Razor Class 庫

[英]Consuming a Razor Class Library with Partial Views in .Net Framework Project

我最近遇到了 Razor Class 庫,我不能 100% 確定用它們可以/不能實現什么,但我非常喜歡能夠創建可以在多個內部共享的視圖(和部分視圖)的概念web 項目。

然而,雖然我知道一點 C# 並且對轉換工具非常熟悉,但我對 VB.Net 的熟練程度要高出 1000 倍,因此我的大部分工作都是這樣編碼的。 .NET 核心,據我推斷不支持 VB.NET。

我按照教程從這里下載了示例代碼https://docs.microsoft.com/en-us/aspnet/core/razor-pages/ui-class?view=aspnetcore-3.1&tabs=visual-studio

有了這個,我能夠構建一個包含 RCL 和 a.NetCore 網站的解決方案,該網站使用來自 RCL 的視圖和部分視圖。

我能夠構建多個 .NETCore 網站,我所要做的就是添加對 RCL 項目的引用,它們都將使用 RCL 中的共享部分視圖......一切都很好。

除了,我不想要 .NETCore 網站項目,因為我想堅持使用 VB.NET,所以我閱讀並被告知我使用 .netstandard2.0 創建的 RCL 應該與 .Net Framework 兼容。

筆記; 本質上,對於即時需求,我打算主要使用 RCL 來創建要在多個項目之間共享的局部視圖。 我很高興使用 C# 為項目邏輯創建它們,並且我的許多代碼邏輯已經存在於我可以導入的 VB class 庫中,但不想重寫或重新學習我已經在主程序中完成的所有內容我的大部分項目。

無論如何,將我所有的工作升級到.NetCore 將是一個 go 的噩夢......

所以....

  • 我創建了一個針對.Net Framework 4.7.2的VB Web應用程序。
  • 我添加了對我的 RCL 的引用
  • 我運行了 Build 來檢查沒有版本沖突或引用不兼容
  • 我運行該網站以檢查沒有被 Visual Studio 捕獲的構建錯誤

以上所有工作正常,參考添加OK,完全沒有問題。

但是...我無法弄清楚如何讓 RCL 中的部分視圖可供網站訪問。

我不斷收到錯誤

The partial view '****' was not found or no view engine supports the searched locations.

誰能告訴我

  • 如何連接 Razor Class 庫以便在 a.Net Framework 項目中使用部分視圖?
  • 我(很可能認識我)是否正在嘗試做一些根本不適合那樣工作的事情?!

編輯...

Ben 在下面的評論中提出了相當合理的要求,以明確我在做什么

首先。 我實際上只是在嘗試一個新的解決方案,所以每次我添加項目時,我實際上只是去“添加新項目> select ”。 除了添加對我的 RCl 的引用之外,我不會編輯 Visual Studio(2019 社區版,如果它有任何區別)創建的模板之外的項目。

RCL 有一個我試圖顯示的局部視圖,它的內容是:

@using RazorUIClassLib
<h1>This is nothing but a test</h1>

顯然RazorUIClassLib是 RCL 的名稱......在這個階段根本沒有其他內容。

文件結構是

> Pages > Shared > Test.cshtml

我有一個名為WebApp1的 C# .NETCore 項目,這是從上面鏈接下載的示例中的確切項目,具有相關的文件結構

> Pages > Index.cshtml

在 Index.cshtml 我添加了這一行:

<partial name="Test"/>

(注意;Visual Studio 對於查找測試文件似乎有點不確定,因為智能感知(ReSharper)說cannot resolve partial view'Test' ,但它運行良好)

我添加了第二個 C# .netcore 項目,以確保我從示例代碼中下載的項目沒有任何“特殊”,其結構與 Visual Studio 模板完全相同,並且文件結構略有不同:

視圖 > 主頁 > Index.cshtml

與上面相同的單行代碼添加到此文件中並且工作方式相同(添加這個全新項目后我所做的只是添加此行和對我的 RCL 項目的引用)

問題項目是一個 VB 項目,顯然是針對 .Net Framework 而不是 CORE。 它實際上只是 Visual Studio 在將新的 MVC 項目添加到解決方案時創建的默認文件結構,所以我們有

視圖 > 主頁 > Index.vbhtml

同樣,除了添加對我的 RCL 項目的引用和這一行之外,我什么也沒做:

@Html.Partial("Test")

我也試過

@Html.Partial("/Pages/Shared/Test")
@Html.Partial("~/Pages/Shared/Test")
@Html.Partial("/RazorUIClassLib/Pages/Shared/Test")
@Html.Partial("~/RazorUIClassLib/Pages/Shared/Test")

以及以上所有帶有 .cshtml 文件擴展名的內容。

在所有情況下,我都會得到不同的 forms 這個錯誤:

The partial view 'Test' was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Home/Test.aspx
~/Views/Home/Test.ascx
~/Views/Shared/Test.aspx
~/Views/Shared/Test.ascx
~/Views/Home/Test.cshtml
~/Views/Home/Test.vbhtml
~/Views/Shared/Test.cshtml
~/Views/Shared/Test.vbhtml

從錯誤中可以清楚地看出,它期望在Views Directory 中找到 Partial,但正如我所提到的,如果我添加完整路徑,我仍然會遇到相同的錯誤,但會出現不同的“我嘗試在此處查找”類型的注釋。

我一直說我沒有更改任何內容以澄清我沒有進行任何路由更改......我想知道我是否應該,但如果是的話,不確定是什么!

所以看起來我的假設是錯誤的。 即使他們可以針對 .NET 標准,RCL只是ASP.NET 核心功能。 您可以在他們的文檔頁面上看到,唯一支持的版本是 ASP.NET 核心產品。 但是,您可以在 RCL 中共享視圖模型和業務邏輯,但這就是它的范圍。

暫無
暫無

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

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