问题标签 [blazor-server-side]

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 投票
4 回答
8755 浏览

c# - 如何在 Blazor.Net 中从 UI 中分离代码

参考这篇VisualStudioMagazine文章,我试图将代码放在单独的文件中,而不是 razor 视图中。

我试过:

和项目组件:

但它不起作用,它表明:

严重性代码描述项目文件行抑制状态错误 CS0115 'Item.BuildRenderTree(RenderTreeBuilder)': 找不到合适的方法来覆盖 WebApplication1.Client D:\Other\blazor\WebApplication1.Client\obj\Debug\netstandard2.0\RazorDeclaration\Pages \ItemModule\Item.razor.g.cs 30 活动

同样根据教程页面不能继承BlazorComponentItemComponent因为它没有参考。

有什么方法可以将大部分代码从 Blazor 视图分离到单独的代码文件中?

更新 1

根据 Chris Answer 进行更改后,它显示异常

System.Net.Http.HttpRequestException:无法建立连接,因为目标机器主动拒绝了它。---> System.Net.Sockets.SocketException: 无法建立连接,因为目标机器主动拒绝。在 System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancelToken) --- 内部异常堆栈跟踪结束 --- 在 System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancelToken ) 在 System.Threading.Tasks.ValueTask 1.get_Result() 在 System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancelToken) 在 System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
at System.Threading.Tasks.ValueTask
1.get_Result() at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask1.get_Result() 在 System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancelToken) 在 System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancelToken
) 在 System.Net.Http.HttpClient 1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts) at System.Net.Http.HttpClient.GetStringAsyncCore(TaskMicrosoft.AspNetCore.Builder.BlazorMonoDebugProxyAppBuilderExtensions.GetOpenedBrowserTabs(String debuggerHost) 上的.FinishSendAsyncUnbuffered(Task 1 getTask).AspNetCore.Builder.BlazorMonoDebugProxyAppBuilderExtensions.DebugHome(HttpContext context)

0 投票
1 回答
632 浏览

blazor - 孩子订阅父母的活动

在 Blazor 中订阅子事件的父控件是微不足道的:在子事件中,我只是声明

[参数] Func OnClick { get; 放; }

并在子控件标记中将父方法分配给 OnClick。但是,我怎样才能达到相反的效果呢?我希望孩子对来自父控件的事件做出反应。到目前为止,我只是简单地从父级调用子方法 - 有更好的方法吗?

0 投票
1 回答
7124 浏览

c# - 将服务器端 Blazor 添加到现有 MVC Core 应用程序

我有一个完全可操作的 Blazor 服务器端项目和一个 .NET Core 3 MVC 项目,它们都在同一个解决方案中。我现在尝试在我的 MVC 项目中使用 Blazor 项目中的组件。

我已经设法让组件在 MVC 页面上呈现,但是 Blazor 组件上的按钮单击不会触发组件的 onclick 事件,而是我只是导航到https://localhost:44341/

我不清楚我需要在 MVC 解决方案中进行哪些更改才能使其正常工作?官方文档讨论了在 MVC 项目中使用组件,并且在与 Dan Roth的视频聊天中提到了它,但都没有详细说明如何实现它。

谁能带我了解如何将服务器端 Blazor 改造为 MVC 项目的完整步骤(或指向我的示例)?

我试过的

我的 Blazor 项目仍然具有标准模板的 Counter 组件,因此我尝试通过引用 Blazor 项目并将其添加到我的 MVC 解决方案中,然后将其添加到我的 index.cshtml 文件中:

这可以正确呈现,但按钮单击不起作用。

我已将 JS 文件添加到 MVC 应用程序 _Layout 页面:

在 MVC 项目的 Startup.cs 文件中打开 Server Side Blazor:

我还在 MVC 项目中添加了 Pages 和 Shared 目录,并复制了 _Imports 和 MainLayout 文件——不确定是否需要。

如果没有这样做,我尝试从所有 Blazor 模板(客户端、客户端托管和服务器端)中启动新项目以寻找线索,但所有这些示例都设置为具有单个 Blazor 的完整 SPA入口点(App文件)托管在 .html 文件中,而我想在许多不同的现有 MVC 页面上呈现 Blazor 组件。

然后,我尝试将这些项目的一部分(以及我正在工作的 Blazor 项目的一部分)添加到 MVC 项目中,但无法让它完全工作。

我也尝试按照此处的答案进行操作,但这适用于将 Blazor 组件文件添加到 MVC 项目中,而我的 Blazor 文件目前(大部分)位于不同的项目中。

迄今为止我的实验中的随机问题

  • 我已services.AddServerSideBlazor();在 MVC 应用程序的 Startup.cs 中添加。那里还需要什么吗?
  • 我的 MVC 应用程序仍在传统上AspNetCore.Routing,如果我只将组件放置在现有 MVC 页面上(即我不会有 Blazor 页面,只有 Blazor 组件),我是否还需要切换到 Core 3 的端点路由。
  • 在浏览器中运行的 blazor javascript 文件(通过 SignalR)与之通信的 Blazor 的服务器端部分是否需要端点路由?我在浏览器中从 js 文件中得到一个 404。
  • 如果我只是托管组件,我还需要“App”(App.razor)类/页面作为入口点吗?
  • 如果是这样,我是否需要将<app>@(await Html.RenderComponentAsync<App>())</app>_Host.cshtml 中的行放在我的 MVC 项目中的某个位置?
  • 我是否需要从我的 MVC 项目中的 Blazor 项目中重现 Pages 和 Shared 文件夹,以及两个 _Imports.razor 文件和 MainLayout.razor 文件?
  • 我认为 Blazor 现在是 Microsoft.NETCore.Platforms 文件的一部分(在 MVC 项目的 SDK 节点下引用),所以我认为我不需要为 Blazor 添加单独的 NuGet 包到 MVC 项目是否正确?
0 投票
1 回答
1643 浏览

authentication - Asp.net Core Blazor - 身份验证

Blazor 相对较新,没有很多关于安全身份验证的文档。在 VS 2019 中,当我创建一个新的 Blazor 项目(服务器端或客户端)时,身份验证选项都被禁用。

Blazor 应用的组织级安全性的身份验证解决方案是什么?

0 投票
1 回答
1653 浏览

c# - Blazor.net UI 未呈现任何内容

我正在开发一个 Blaor.Net 应用程序,参考了互联网上的许多帖子。我面临的问题是我想将代码从 UI 移动到单独的文件中,以保持 razor 文件干净可读和易于理解。为此,我将我的 UI 端 C# 代码保存在一个单独的组件中,该组件继承自 BaseComponent

项目组件.cs

我不想在 UI 中进行 api 调用,而是将它放在单独的文件中,组件基本上作为剃须刀页面的代码隐藏文件工作

Http.GetJsonAsync>(BaseUrl + "api/Item/GetItems");

但是在创建组件并将其继承到剃须刀之后,它会抛出异常

System.Net.Http.HttpRequestException:无法建立连接,因为目标机器主动拒绝了它。---> System.Net.Sockets.SocketException: 无法建立连接,因为目标机器主动拒绝。在 System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancelToken) --- 内部异常堆栈跟踪结束 --- 在 System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancelToken ) 在 System.Threading.Tasks.ValueTask1.get_Result() 在
System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage
请求,布尔 allowHttp2,CancellationToken cancelToken)

在 System.Threading.Tasks.ValueTask1.get_Result() 在 System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancelToken) 在 System.Threading.Tasks.ValueTask1.get_Result() 在
System.Net.Http.HttpConnectionPool。
在 System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancelToken) 在 System.Net.Http.RedirectHandler.SendAsync 的 System.Threading.Tasks.ValueTask1.get_Result() 的GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancelToken ) System.Net.Http.HttpClient.FinishSendAsyncUnbuffered(Task1 sendTask,
Microsoft.AspNetCore.Builder.BlazorMonoDebugProxyAppBuilderExtensions.GetOpenedBrowserTabs(String debuggerHost
) 在 Microsoft.AspNetCore.Builder.BlazorMonoDebugProxyAppBuilderExtensions.DebugHome(HttpContext context )

浏览器在此异常后挂起,无法关闭,只能通过任务管理器关闭

0 投票
1 回答
1615 浏览

blazor-server-side - 服务器端 Blazor blazor.server.js 而不是 blazor.webassembly.js

我正在尝试服务器端 Blazor(.net core 3.0 Preview 5)。我一直在网上搜索,但似乎找不到答案。我真的很喜欢 Blazor(ASP.NET Core 托管)模板的“布局”(见下图)。其中的客户端部分是 WebAssebly。但是我读到了一些软件,我可以将 blazor.webassembly.js 更改为 blazor.server.js,并且它就是这样。这怎么行不通。我在控制台日志中收到一些错误:

错误:无法完成与服务器的协商:错误:内部服务器错误 blazor.server.js:1

错误:如果连接未处于“已连接”状态,则无法发送数据。blazor.server.js:1

我需要做什么才能让客户端使用 blazor.server.js 而不是 blazor.webassembly.js?

还是我误解了一切?

Blazor 模板

0 投票
1 回答
354 浏览

apache - Blazor URI 'https://mydomain.tk/login' 不包含在基本 URI 中

我有一个问题,没有页面可以工作,只有索引页面。它可以在我自己的机器上运行(在 Visual Studio 中测试时),但是在使用 apache2 托管在 linux ubuntu 机器上时会出现此错误。

该网页曾经是服务器托管的客户端模型(它工作正常,完全没有问题,只是速度很慢),但现在我将其更改为仅服务器(与 SignalR 一起使用)它不再工作了。

我设法在 apache 设置中修复了 websocket 连接,所以它正在连接。仅当尝试转到另一个页面时,例如 /login 才会发生这种情况: 在此处输入图像描述

随意尝试https://miniturtle.tk

使用版本 3.0.0-preview5

Ubuntu 16.04.6 LTS

我认为这是apache配置文件。

/etc/systemd/system/kestrel-FatGo.service:

/etc/apache2/conf-enabled/FatGo.conf:

/etc/apache2/sites-available/FatGo.conf:

如果您能帮我解决这个问题,我将不胜感激 :) 感谢您的阅读

PS我不是经验丰富的网络开发人员

0 投票
1 回答
597 浏览

blazor-server-side - 服务器端 Blazor 中每个用户 DOM 通常使用多少内存?

我知道 blazor 服务器端将每个用户的 DOM 保留在内存中,并在每次触发事件时使用 signal-r 更新浏览器 DOM,我想知道内存占用量,以便为典型的中型用户在内存中保留这个 DOM Web 应用程序中的页面?我的另一个问题是,像鼠标移动这样不断更新页面的快速事件在这个框架中是否实用?

0 投票
2 回答
3920 浏览

blazor - 传递给 onclick 函数的 blazor 变量参数

我想将 int i 传递给每个列表项的按钮 onclick 函数。我预计“clickItem”函数将收到对应列表项的 0..2。但结果表明它总是接收 3 作为参数。似乎 clickItem(i) 中的变量 i 在 for 循环的渲染时没有被评估。我尝试将其更改为“clickItem(@i)”,但它仍然是一样的。我应该怎么办?(我使用的是 blazor 服务器端,.net core 3 preview 5)

在此处输入图像描述

0 投票
1 回答
1765 浏览

blazor - IE11 中的 Blazor 服务器端 onclick 不起作用

我正在尝试让 Blazor(服务器端)与 IE11 一起使用(它与 Chrome 一起使用)。但是 IE 11 似乎没有响应 onclick="@ExportExcel"。我已经从https://github.com/Daddoon/Blazor.Polyfill添加了 blazor.polyfill.min.js但它没有帮助。提前致谢!

前端代码如下。

在 _Host.cshtlm 中编辑 ,我按照 Issac 的建议添加了 polyfill.min.js

我现在在控制台日志中看到一条错误消息“CSS3111:@font-face 遇到未知错误。” 我注释掉引导程序只是为了测试,我仍然得到错误。我猜是 onclick 中 GetTransferFile 之前的 @ 引起了混淆。