问题标签 [razor-components]

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.

0 投票
1 回答
265 浏览

c# - 为什么(等待 DbConnection.QueryAsync(sql)).ToList() 在某些情况下使用 bunit 进行测试失败,而在其他情况下则出现两个不同的错误?

我尝试为EditProposalBlazor 服务器端项目中的组件编写 bunit 测试。我有奇怪的行为,我的测试在 10 次中有 1 次继续没有错误,而其他时候我得到以下错误之一:

有时错误

这是我的基本测试设置:

以下方法失败:

正是这一行:var skills = (await DbConnection.QueryAsync<Skill>(sql)).ToList();

我在其中调用此方法ProposalService,用于将特定提案从数据库加载到我的编辑提案中:

它似乎与dapper方法有关。

对此真的很奇怪,它只发生在 bunit 测试中,而不会发生在浏览器或服务方法的集成测试中。我想我可能不得不完全模拟该服务,但它似乎更像是一个错误,或者我的代码有什么问题吗?

如何在不必模拟服务的情况下解决此问题?

更新

我能够在这里找到一个可能的答案。

给第二种方法另一个连接似乎使它在较少的情况下失败。注意:我使用以下服务放弃了自己打开连接:

services.AddTransient<IDbConnection>(sp => new SqlConnection(DatabaseUtils.ConnectionString));startup.cs

0 投票
1 回答
215 浏览

razor - Razor组件按钮@onclick不调用c#方法

我正在寻找开始创建一个新网站,我遇到了 blazor/razor for asp.net。我会说只是看着它,这让我非常兴奋能够摆脱所有的 javascript 框架。但是,像许多其他人一样,我在让简单的@onclick 工作时遇到问题,而且我对 blazor/razor 进行的研究越多,我就越感到困惑。正如其他人所指出的,一切似乎都在不断变化,所以我发现的资源一直自相矛盾。

首先,我尝试在 ASP.NET Core Web 应用程序中创建一个简单的 Razor 组件(.razor 扩展名)。作为入门指南,我在 youtube 上观看了“在 ASP.NET Core 3.0 中引入 Razor 组件 - Daniel Roth”视频,并得出以下结论:

我的问题是,按钮 @onclick 没有调用 Search 方法。我已经看到了这种语法的几种不同变体,并且我都试过了。我提到的视频有

但我发现现在 onclick 前面需要 @ 符号。我已经看到方法名称前面包含和不包含 @ 符号。如果我不包含它,它会编译并运行,但按钮不会做任何事情。如果我确实包含它,我会收到错误消息:

无法将方法组“搜索”转换为非委托类型“对象”。您是否打算调用该方法?

我发现这个 BlazorFiddle ( https://blazorfiddle.com/s/aoa87v05 ) 作为一个快速测试场,发现同时添加:

工作正常。所以我不确定我在这里做错了什么。(也许这个 blazor fiddle 在旧版本上?)

任何帮助将不胜感激。

作为参考,这里是调用这个的 .cshtml 页面:

我已经尝试了渲染模式的每个选项,但没有运气。

我还添加了“services.AddServerSideBlazor()”和“endpoints.MapBlazorHub();” 到 Startup.cs 页面。

PS:作为一个旁注问题,没什么大不了的,我看到一些对使用语法调用的组件的引用

,但这对我不起作用。那已经被删除了吗?我更喜欢这种语法,因为它看起来更干净。

0 投票
2 回答
510 浏览

blazor - 在 Blazor 中,如何将参数从 @Body 级联回布局?

我需要更改标题中微调器的类 - 在获取数据时显示它,并在完成后将其变为不可见。

使用级联值,我可以在布局中拥有:

在页面中我可以[CascadingParameter] string classStr用来访问布局中设置的值。

如果我想classString在受页面中 classStr 更改影响的布局中,我可以级联一个事件,如此处所示

但是此示例将事件级联到子组件,<ChildComponent OnStrChange="@ChangeStr">其中OnStrChange使用 [Parameter] 在子组件上定义 where。

我试过级联事件,<CascadingValue Value="eventName" Name="event">但这似乎不起作用。

我可以将事件级联到使用@Body 调用的页面吗?

0 投票
0 回答
20 浏览

razor-pages - 如何从 Razor 页面设置 Razor 组件 EventCallback

我想从 Razor 页面设置 Razor 组件的 EventCallback 参数。

我创建了一个测试 Razor 组件,并希望将 EventCallback 提升回作为 Razor 页面的父级。组件本身正在工作,但看起来 EventCallback 没有设置。

这是组件的代码

下面是 Razor 页面片段

0 投票
0 回答
38 浏览

c# - 在哪里可以找到为 Blazor 组件生成的 .razor.g.cs 文件(.razor 文件)

在 .net 6 之前,我们可以在 obj\Debug\netcoreapp3.0\Razor\Pages 找到生成的文件。但在 .net 6 中似乎并非如此,并且互联网上没有关于此主题的信息。你能告诉我在哪里可以找到所有 Blazor 组件的那些生成的 .cs 文件吗?

谢谢你。

0 投票
1 回答
85 浏览

asp.net-core - Razor 组件上的 EditForm 未触发 OnValidSubmit

我有一个简单的剃​​须刀组件,它接受用户的评论,然后保存评论。呈现它的页面当前位于 Pages >> Expeditions >> Index.cshtml。当我在浏览器中导航到 /Expeditions 时,一切都正确加载并且 OnValidSubmit 有效。当我导航到 /Expeditions/Index 时,页面会正确呈现,但 OnValidSubmit 永远不会被触发。

我猜当我在 URL 中省略索引时会发生某种类型的魔法。我想知道我在这里做错了什么,因为如果我将组件放在索引页面以外的任何页面中,提交按钮不会触发 OnValidSubmit。

这是代码... Index.cshtml

ComposeCommentComponent.razor

启动.cs

0 投票
1 回答
42 浏览

c# - 如何在剃须刀组件中使用 Html.EditorFor()?

我有一个基于 ASP.NET Core/.net 5 的项目。我想创建某种可重用的视图/组件来创建日期时间范围选择器。所以任何时候我想创建日期时间范围都可以调用视图/组件,它会相应地渲染视图。

我最初的想法是想为以下模型创建一个编辑器模板

然后任何时候我想渲染一个日期时间范围,然后我会做这样的事情

Main.cshtml视图中我会做这样的事情

但是在上面的用例中,没有办法告诉编辑器是否需要范围。

所以我考虑使用剃须刀组件,因为组件允许我将参数传递给视图

DateTime.razor组件看起来像这样

然后在我的主要观点中,我会做这样的事情

但是,我将如何使用helper 或任何其他方法从组件内部呈现和Propertiesasp-for的输入,同时又不会失去 HTML 前缀的完整性?FromTo

0 投票
1 回答
12 浏览

razor - 循环创建的 Razor 组件实例 - 参数问题

我想生成这样的组件实例:

问题是每个组件实例在最终视图中都有相同的参数索引值,这个值是 9。这可能是因为这是渲染时正确的变量值。是否可以将“i”变量的正确值传递给组件?非常感谢。

0 投票
1 回答
39 浏览

.net-core - 如果 Blazor WebAssembly 应用程序是 ASPNET Core 托管的,那么使用组件的最佳做法是什么?

我有一个功能正常的 Blazor WebAssembly (WASM) 组件,它是 ASP.NET Core 托管的,包含三个项目:客户端、服务器和共享。客户端组件使用服务器端应用程序内的控制器文件中包含的 Web API 端点连接到 SQL Server 数据库。

我现在想与多个应用程序共享这个组件。最佳实践是使用 Razor 类库 (RCL) 还是仅将组件保留为项目格式并直接在将使用它的项目中添加/引用它?如果推荐使用 RCL,我该如何处理控制器?

0 投票
1 回答
33 浏览

blazor - 一个 Razor 页面中的多个 Razor 组件

问题如下。有一个 Razor Page 项目(Blazor 的混合体)。其中一个页面在 ServerPrerendered 模式下使用了两个 Razor 组件。它们中的每一个的初始化都需要从数据库中加载数据。当页面上只涉及一个组件时,没有问题 - 一切都按预期工作,包括交互性。但是如果同时使用两个组件,就会发生一些不可理解的事情——只有一个组件被正确初始化,每次都不一样。我不知道在哪里看,因为在带有断点的调试模式下,一切正常。请告诉我,可能是什么问题?

初始化其中一个组件