问题标签 [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.
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 活动
同样根据教程页面不能继承BlazorComponent
,ItemComponent
因为它没有参考。
有什么方法可以将大部分代码从 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.ValueTask
1.get_Result() at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)
at System.Threading.Tasks.ValueTask1.get_Result() at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Threading.Tasks.ValueTask
1.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.HttpClient1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts) at System.Net.Http.HttpClient.GetStringAsyncCore(Task
Microsoft.AspNetCore.Builder.BlazorMonoDebugProxyAppBuilderExtensions.GetOpenedBrowserTabs(String debuggerHost) 上的.FinishSendAsyncUnbuffered(Task 1 getTask).AspNetCore.Builder.BlazorMonoDebugProxyAppBuilderExtensions.DebugHome(HttpContext context)
blazor - 孩子订阅父母的活动
在 Blazor 中订阅子事件的父控件是微不足道的:在子事件中,我只是声明
[参数] Func OnClick { get; 放; }
并在子控件标记中将父方法分配给 OnClick。但是,我怎样才能达到相反的效果呢?我希望孩子对来自父控件的事件做出反应。到目前为止,我只是简单地从父级调用子方法 - 有更好的方法吗?
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 项目是否正确?
authentication - Asp.net Core Blazor - 身份验证
Blazor 相对较新,没有很多关于安全身份验证的文档。在 VS 2019 中,当我创建一个新的 Blazor 项目(服务器端或客户端)时,身份验证选项都被禁用。
Blazor 应用的组织级安全性的身份验证解决方案是什么?
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 )
浏览器在此异常后挂起,无法关闭,只能通过任务管理器关闭
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?
还是我误解了一切?
apache - Blazor URI 'https://mydomain.tk/login' 不包含在基本 URI 中
我有一个问题,没有页面可以工作,只有索引页面。它可以在我自己的机器上运行(在 Visual Studio 中测试时),但是在使用 apache2 托管在 linux ubuntu 机器上时会出现此错误。
该网页曾经是服务器托管的客户端模型(它工作正常,完全没有问题,只是速度很慢),但现在我将其更改为仅服务器(与 SignalR 一起使用)它不再工作了。
我设法在 apache 设置中修复了 websocket 连接,所以它正在连接。仅当尝试转到另一个页面时,例如 /login 才会发生这种情况:
使用版本 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我不是经验丰富的网络开发人员
blazor-server-side - 服务器端 Blazor 中每个用户 DOM 通常使用多少内存?
我知道 blazor 服务器端将每个用户的 DOM 保留在内存中,并在每次触发事件时使用 signal-r 更新浏览器 DOM,我想知道内存占用量,以便为典型的中型用户在内存中保留这个 DOM Web 应用程序中的页面?我的另一个问题是,像鼠标移动这样不断更新页面的快速事件在这个框架中是否实用?
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 之前的 @ 引起了混淆。