Jam*_*oll 5 c# vb.net razor asp.net-core razor-class-library
我最近遇到了 Razor 类库,并不能 100% 确定它们能/不能实现什么,但我非常喜欢能够创建可以在多个视图中共享的视图(和部分视图)的概念。网络项目。
然而,虽然我了解一点 C# 并且非常熟悉转换工具,但我对 VB.Net 的熟练程度要高出 1000 倍,因此我的大部分工作都是以这种方式编码的。.NET Core,据我所知不支持VB.NET。
我按照教程并从此处下载了示例代码https://learn.microsoft.com/en-us/aspnet/core/razor-pages/ui-class?view=aspnetcore-3.1&tabs=visual-studio
这样我就能够构建一个包含 RCL 和 .NetCore 网站的解决方案,该网站使用 RCL 中的视图和部分视图。
我能够构建多个 .NETCore 网站,我所要做的就是添加对 RCL 项目的引用,它们都将使用 RCL 中的共享部分视图...一切运行良好。
除了,我不想要 .NETCore 网站项目,因为我想坚持使用 VB.NET,所以我阅读并被告知我使用 .netstandard2.0 创建的 RCL 应该与 .Net Framework 兼容。
笔记; 本质上,为了满足当前的需求,我打算主要使用 RCL 来创建要在多个项目之间共享的部分视图。我很高兴使用 C# 创建它们作为项目逻辑,并且我的很多代码逻辑已经存在于 VB 类库中,我可以导入它们,但不想重写或重新学习我在 main 中已经完成的所有内容我的大部分项目。
无论如何,将我的所有工作升级到 .NetCore 将是一场噩梦......
所以....
以上一切工作正常,引用添加正常,没有任何问题。
但是...我无法弄清楚如何让 RCL 中的部分视图可供网站访问。
我不断收到错误
The partial view '****' was not found or no view engine supports the searched locations.
Run Code Online (Sandbox Code Playgroud)
谁能告诉我
编辑...
本在下面的评论中提出了相当合理的要求,以澄清我在做什么
首先。我实际上只是在尝试新的解决方案,因此每次添加项目时,我实际上只是要“添加新项目>选择”。除了添加对我的 RCl 的引用之外,我不会编辑 Visual Studio(2019 社区版,如果有任何区别)创建的模板之外的项目。
RCL 有一个我试图显示的局部视图,它的内容是:
@using RazorUIClassLib
<h1>This is nothing but a test</h1>
Run Code Online (Sandbox Code Playgroud)
显然RazorUIClassLibRCL 的名称在哪里……现阶段根本没有其他任何内容。
文件结构是
> Pages > Shared > Test.cshtml
Run Code Online (Sandbox Code Playgroud)
我有一个 C# .NETCore 项目,WebApp1该项目与从上面的链接下载的示例中的项目完全相同,具有相关的文件结构
> Pages > Index.cshtml
Run Code Online (Sandbox Code Playgroud)
在 Index.cshtml 中我添加了这一行:
<partial name="Test"/>
Run Code Online (Sandbox Code Playgroud)
(注意;Visual Studio 似乎对于像 intellisense (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")
Run Code Online (Sandbox Code Playgroud)
我也尝试过
@Html.Partial("/Pages/Shared/Test")
@Html.Partial("~/Pages/Shared/Test")
@Html.Partial("/RazorUIClassLib/Pages/Shared/Test")
@Html.Partial("~/RazorUIClassLib/Pages/Shared/Test")
Run Code Online (Sandbox Code Playgroud)
以上所有内容均带有 .cshtml 文件扩展名。
在所有情况下,我都会遇到不同形式的此错误:
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
Run Code Online (Sandbox Code Playgroud)
从错误中显然可以看出,它期望在Views目录中找到部分,但正如我提到的,如果我添加完整路径,我仍然会得到相同的错误,但具有不同的“我尝试查看此处”类型注释。
我一直说我没有更改任何内容,以澄清我没有进行任何路由更改...我想知道我是否应该这样做,但如果是这样,不确定什么!
| 归档时间: |
|
| 查看次数: |
2342 次 |
| 最近记录: |