问题标签 [razor-class-library]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 在 .Net Framework 项目中使用带有部分视图的 Razor 类库
我最近遇到了 Razor 类库,我不能 100% 确定用它们可以/不能实现什么,但我非常喜欢能够创建可以在多个内部共享的视图(和部分视图)的概念网络项目。
然而,虽然我了解一点 C# 并且非常熟悉转换工具,但我对 VB.Net 的熟练程度要高出 1000 倍,因此我的大部分工作都是以这种方式编码的。.NET Core,据我推断不支持 VB.NET。
我按照教程并从这里下载了示例代码https://docs.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 将是一场噩梦……
所以....
- 我创建了一个针对 .Net Framework 4.7.2 的 VB Web 应用程序。
- 我添加了对我的 RCL 的引用
- 我运行了 Build 来检查没有版本冲突或引用不兼容
- 我运行该网站以检查没有被 Visual Studio 捕获的构建错误
以上所有工作正常,参考添加OK,完全没有问题。
但是...我无法弄清楚如何让 RCL 中的部分视图可供网站访问。
我不断收到错误
谁能告诉我
- 如何连接 Razor 类库以便在 .Net Framework 项目中使用部分视图?
- 我(很可能认识我)是否正在尝试做一些根本不适合那样工作的事情?!
编辑...
Ben 在下面的评论中提出了相当合理的要求,以明确我在做什么
首先。我实际上只是在尝试一个新的解决方案,所以每次我添加项目时,我实际上只是去“添加新项目>选择”。除了添加对我的 RCl 的引用之外,我不会编辑 Visual Studio(2019 社区版,如果它有任何区别)创建的模板之外的项目。
RCL 有一个我试图显示的局部视图,它的内容是:
显然RazorUIClassLib
RCL 的名称在哪里……在这个阶段根本没有其他内容。
文件结构是
我有一个名为的 C# .NETCore 项目WebApp1
,它是从上面链接下载的示例中的确切项目,具有相关的文件结构
在 Index.cshtml 我添加了这一行:
(注意;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 项目的引用和这一行之外,我什么也没做:
我也试过
以及以上所有带有 .cshtml 文件扩展名的内容。
在所有情况下,我都会收到不同形式的此错误:
从错误中可以清楚地看出,它期望在Views
目录中找到 Partial,但正如我所提到的,如果我添加完整路径,我仍然会遇到相同的错误,但会出现不同的“我尝试在此处查找”类型的注释。
我一直说我没有更改任何内容以澄清我没有进行任何路由更改......我想知道我是否应该,但如果是的话,不确定是什么!
c# - 使用 StaticFileOptions() 从 Razor 类库中中断嵌入的静态文件
我正在尝试使用将长缓存头添加到静态 .css 和 .js 文件StaticFileOptions
从各种 SO 和其他文章中,您可以这样做:
但是,我使用的是 RCL 提供的一堆静态文件。RCL 有一个我在本文中使用的 StaticServing.cs 类:Razor 类库也可以打包静态文件(js、css 等)吗?
为了完整起见,我的问题如下:
在我拥有的消费项目 startup.csservices.ConfigureOptions(typeof(StaticServing));
和 RCL 拥有<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
和<EmbeddedResource Include="Static\**\*" />
设置中。
一切就绪后,一切正常……除非我StaticFileOptions
在问题的开头添加代码,在这种情况下,对嵌入式静态文件的所有引用都返回404
.
我试过添加:
FileProvider = env.ContentRootFileProvider
和FileProvider = env.WebRootFileProvider
到StaticFileOptions
设置,但这不起作用。
asp.net-core - 如何从 Razor 类库中获取嵌入式静态文件的列表?
标题真的是问题...
我有一个嵌入式 Razor 类库,其中包含一些 CSS 文件,它们是一堆引导主题。
由于 Razor 类库将其全部内容编译到单个文件中,因此没有File System
这样的文件,因此Directory.GetFiles
wwwroot/css 目录不像在普通网站项目中那样工作。
那么,有谁知道如何在代码中获取嵌入式 CSS 文件的列表?
(如果相关,这个问题是我之前在开发这个项目时问过的一个问题,它显示了我用来在我的 RCL 中嵌入静态文件的代码)
(项目使用.NET Core 3.0)
asp.net-core - BlazorWebAssembly 5.0 不从 Razor 类库加载静态资产
注意: 这不是重复的。
升级到 后.Net Core 5
,来自其他类库(Razor 类库项目)BlazorWebAssembly
的静态资产(如.js
或)没有被提供服务并面临http 状态。.css
404
为了测试这一点,我从默认模板示例开始,并向其中添加了 Razor 类库。我添加了.css
文件 (test1.css),如您所见,.css
无法访问。我的其他项目也发生了同样的问题。
(我已经测试过两者Visual Studio 2019 16.8.1
和16.9.0 preview 1
)
找不到资源:
blazor - 通过使用应用程序覆盖 blazor 组件库中的隔离 css
我已经建立了一个 blazor 组件库,它定义了几个 blazor 组件 + 隔离的 CSS 文件。这些 css 文件是从 sass 文件中转译的,在这些文件中我使用引导程序的 mixins 指定引导程序网格系统,例如 @include make-col-ready(); 或@include make-col(4);。
这一切都运行良好,并且 CSS 和 blazor 组件能够被我的 blazor webassembly 应用程序使用,我使用组件库的项目引用依赖项设置了该应用程序。
现在理想的情况是,如果我可以让组件库中的隔离 CSS 充当默认样式,但我可以在使用应用程序中覆盖此样式(也包括引导混合)。理想情况下,我希望在我的组件库中设置 !default sass 变量,用于确定是使用默认 css,还是根本不包含它。我已经尝试过类似下面的代码片段(只是一个简单的草图,不要太认真),但据我了解,在将这些变量编译为 css 以供消费应用程序导入之前,无法覆盖这些变量。
TL;博士; 有没有办法设置一个 blazor 组件库,以便使用应用程序可以覆盖现有的隔离 css(在组件库中),以便可以使用不同的引导网格混合?
我希望我提供了足够的上下文,如果没有,我很乐意提供更多。
提前致谢!
asp.net-mvc - 作为 Razor 类库的独立 Blazor 应用
技术上是否可以将完整的 webassembly Blazor 应用程序作为 Razor 类库,然后在另一个 ASP.NET 项目中使用它,而不管使用者是 MVC、Razor Pages 还是 Blazor 应用程序?是否可以在 Razor 类库中定义路由?
我正在开发一个将作为 Nuget 包发布的项目。这个包应该用于各种 ASP.NET 项目,这些项目被实现为 MVC、Razor Pages 甚至 Blazor。
css - Razor 类库中的 Blazor 组件(CSS 隔离)
我创建了一个组件:
MyComponent.razor
并添加了一个css文件:
MyComponent.razor.css
css文件嵌套在Visual Studio的组件文件下,所以我知道没有拼写错误。这是在 Razor 类库中。
我遇到了奇怪的行为,我追踪到与引导类的类名冲突,该引导类也加载到我的 Index.cshtml 文件中。
我在组件中重命名了我的类名以避免冲突,并且一切都按我预期的那样工作。
但是,我的理解是对 css 文件使用这种命名约定意味着 HTML 中的所有类名和 CSS 文件中的类名都会得到这个随机 b-?????????? 后缀/属性以避免此类名称冲突。
我是否误解了 CSS 隔离?
blazor - Blazor 应用程序不会将 css 隔离范围标识符添加到 razor 类库组件元素
我对 blazor 完全陌生,我正在尝试将 razor 类库中的组件添加到 blazor 应用程序。
我使用默认的 blazor 应用程序 (.net5) 和 razor 类库 (.net5)。
我将默认组件 (Component1) 添加到 blazor 索引页面。
我在类库中所做的唯一一件事是添加一个名为 Component1.razor.css 的文件,其中包含:
.css 文件正确捆绑到 _content/ComponentLibrary/Component1.razor.rz.scp.css 并在 Blazorapp.styles.css 中正确导入
css 文件中的作用域标识符:
但是,<h1>Counter</h1>
页面上的 b-r7wl1itmzi 范围尚未添加到 h1 元素中。
如果我将 Component1 组件复制到 blazor 应用程序,它将按预期工作并且标记为<h1 b-r7wl1itmzi>Counter</h1>
.
我在这里想念什么?
dependency-injection - 将组件的依赖注入方法移动到 Blazor 服务器端中的分离 CS 库
希望在单独的 .cs 文件和/或单独的库中创建可重用的函数/方法。当然我知道怎么做,我的问题是我不知道在需要使用依赖注入元素的情况下怎么做。例如,这是一个关于获取用户属性的非常简单的函数:
如果(!)组件已初始化,这适用于每个剃须刀文件/组件。如果没有,注入的服务也没有初始化并得到一个空异常错误。
我不想将此代码片段重写/复制到我想使用的每个组件中,所以我想为它创建一个类或库。正确的方法应该是什么?最好的事情是如果我可以将这些函数移动到单独的类库或 Razor 类库中。
更新:
@Nkosi 提供了完美的解决方案,但我想向前思考一点。之前的代码示例非常小,那么如果我的自定义方法需要 2-3-4 或更多 DI 怎么办?例如(在 Razor 组件中):