当我尝试注入 HttpClient 时,我在 razor 页面中收到错误:
未处理的承诺拒绝:错误:System.InvalidOperationException:无法为类型上的属性“Http”提供值。没有“System.Net.Http.HttpClient”类型的注册服务。
请审查并提供反馈。
我正在学习,并看到 2 种类型和Blazor的好处。client-sideserver-side
我想在同一个网络上使用两者,例如一个路径是client-side WebAssembly应用程序,另一个路径是server-side在服务器中运行代码的路径。
我见过Blazor Full-Stack模板(不太明白),但最新的模板包中缺少它。他们是故意删除的吗?(只剩下 2 个Blazor Server App和 Blazor WebAssembly App)
我从这个命令下载模板。
dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.0.0-preview9.19465.2
可以client-side和server-side合作吗?
blazor blazor-server-side asp.net-core-3.0 blazor-client-side
我一直在测试 Blazor,但找不到任何有关如何实现浏览器缓存的文档(无论是使用图像、css、js 等静态文件,还是下载的 dll 文件)。
是否可以在 Blazor 中缓存静态文件和 dll 文件?
我正在尝试让Required 属性与InputSelect 一起使用,但验证在Blazor Server 中不起作用。该表格无需选择即可提交。有趣的是,当模型属性可为空时它会起作用。在 .NET 5.0 之前,它不适用于可空类型,因为 InputSelect 不支持它们。然而,我想要一个不可为 null 的必需属性,因为我想将 API 中的 dto 重用为模型,而且它在逻辑上是错误的。
public class SomeModel
{
[Required]
public string SomeString { get; set; }
[Required]
public SomeEnum SomeEnum { get; set; }
[Required]
public SomeEnum? SomeNullableEnum { get; set; }
[Required]
public int SomeInt { get; set; }
[Required]
public int? SomeNullableInt { get; set; }
}
public enum SomeEnum
{
A = 1,
B = 2
}
Run Code Online (Sandbox Code Playgroud)
这一页
@page "/testrequired"
@using TestNET5BlazorServerApp.Data;
<EditForm Model="Model" OnValidSubmit="Submit"> …Run Code Online (Sandbox Code Playgroud) 我需要onclick在子组件中发生该事件,ShowMessage在父组件中执行方法,传递message字符串作为参数。以下代码不起作用:
儿童剃须刀:
<input type="text" @bind-value="@message" @onclick="OnClickCallback"/>
<button @onclick="ChangePassword">Parent button</button>
@code {
private string message;
[Parameter]
private string Message {get; set;}
[Parameter]
public EventCallback<MouseEventArgs> OnClickCallback {get; set;}
[Parameter]
public EventCallback<string> OnClick { get; set; }
private async Task ChangePassword()
{
await OnClick.InvokeAsync(message);
}
}
Run Code Online (Sandbox Code Playgroud)
父剃刀:
@page "/parent"
<Child @bind-Message="message" OnClickCallback="@ShowMessage"></Child>
<p>@message</p>
@code {
private string message;
private void ShowMessage(MouseEventArgs args, string e)
{
message = e;
}
}
Run Code Online (Sandbox Code Playgroud)
错误:无法从“方法组”转换为“EventCallback”OnClickCallback="@ShowMessage"
c# blazor blazor-server-side asp.net-blazor blazor-webassembly
我有 Blazor 服务器端应用程序,其中我为 Metronic Bootstrap 模板添加了 JavaScript 和 CSS 库。
当我运行应用程序时,模板已完全加载,但 JavaScript 没有响应。
例如,当我单击侧面菜单(箭头图标)或展开列表,或单击用户配置文件下拉菜单时,所有这些部分都不起作用。
但是,当我注释掉该行时,Blazor 服务器库 ( blazor.server.js) 模板开始工作,但其他 Blazor 组件无法正常工作(例如计数器)。
在_Host.cshtml文件Head部分添加了以下 CSS 引用:
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700" />
<link href="assets/plugins/custom/fullcalendar/fullcalendar.bundle.css" rel="stylesheet" type="text/css" />
<link href="assets/plugins/global/plugins.bundle.css" rel="stylesheet" type="text/css" />
<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
在Body部分中添加了以下 JavaScript 参考。
<script src="_framework/blazor.server.js"></script>
<script src="./assets/plugins/global/plugins.bundle.js"></script>
<script src="./assets/js/scripts.bundle.js"></script>
<script src="./assets/plugins/custom/fullcalendar/fullcalendar.bundle.js"></script>
<script src="./assets/js/custom/widgets.js"></script>
<script src="./assets/js/custom/apps/chat/chat.js"></script>
<script src="./assets/js/custom/modals/create-app.js"></script>
<script src="./assets/js/custom/modals/upgrade-plan.js"></script>
Run Code Online (Sandbox Code Playgroud)
我也尝试了以下方法,但没有任何效果。看起来 Blazor 服务器应用程序在这些 JavaScript 文件加载到 DOM 之前正在渲染。我如何加载这些脚本并使其正常工作。任何帮助将非常感激。
<script src="_framework/blazor.server.js" autostart="false"></script>
<script> …Run Code Online (Sandbox Code Playgroud) 我已在我的解决方案中添加了一个 webapi 项目,其中包含一个控制器来执行 HttpGet。Blazor服务器项目可以在本地很好地访问并部署。我可以在本地对服务进行邮递员调用,但部署的版本从我的 _Host 文件中向我提供 Blazor 连接失败消息。如何在不干扰 Blazor 的情况下从外部配置 webapi 访问?
我认为这可能是我需要解决的某种路由问题。我正在使用 .NET5,我的 webapi 启动有这个:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "myapp.WebApi v1"));
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
Run Code Online (Sandbox Code Playgroud)
WebApi程序.cs:
namespace myapp.WebApi
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
Run Code Online (Sandbox Code Playgroud)
Blazor 程序.cs:
namespace myapp.UI
{
public class …Run Code Online (Sandbox Code Playgroud) 我是 .net、C# 新手,目前正在编写我的第一个 Blazor(服务器端)应用程序。后来我想迁移到 Blazor WebAssembly..
但是,我想到了一个问题,我需要控制器吗?
我知道 NestJS 形式的控制器 - 控制器处理 http 请求并使用服务进行数据交换和其他任务。
但是因为目前一切都是在服务器端处理的,所以不会发出 http 请求。所以我想不出这个(部门)可以派上用场的情况。
此外,控制器是否在发出实际 http 请求的 WebAssembly Blazor 应用程序中使用?
因为在这里我可以想象这样的划分是有利的。
提前致谢。
我的应用程序都使用 bootstrap 5 css 框架,我不想改变它。如果我想使用 MudBlazor,我可以摆脱 Materialize 并仍然使用 bootstrap 吗?
我们编写了一个 Blazer Server 应用程序 (.NET 7.0),托管在 Windows Server 2019 上的 IIS 10 上。该应用程序在最新版本的 Chrome 或 Edge 下运行良好。然而,我们的一些用户使用最新版本的 Firefox,他们偶尔无法加载该应用程序的页面。我找不到无法加载的原因,而且您使用该应用程序的时间越长,这种情况就越有可能发生。
使用应用程序时保持开发者控制台打开,当网站加载失败时,我注意到以下情况:Uncaught (in promise) WebSocket is not in the OPEN state和Uncaught (in promise) Error: cannot send data if the connection is not in the 'Connected' State.
我偶尔还会注意到 Chrome 的开发者控制台101 Switching Protocols发送了一个请求,其中包含 200 响应标头Upgrade: websocket。我不知道这是否意味着 SignalR 在某种程度上失败了,并且“原始”WebSockets 被用作 Chrome 中的后备,也许表明 Firefox 的后备尝试失败了?
我已经通过about:configFirefox确认network.http.http2.websockets设置为 true。我还重新启动了 IIS Web 服务器,以防万一导致问题,并确认 WebSockets 已作为 IIS 的一部分安装。
除此之外,我对 SignalR …