blazor 相关问题

Blazor是一个Web框架,允许开发人员在.NET中编写客户端代码。它是ASP.NET Core的一部分,称为“Razor Components”。

.Net 8 Blazor Web App 如何将不存在的 url 映射到 <NotFound> 元素

这是一个交互式 WebAssembly Blazor Web 应用程序。 当用户单击不存在的网址的链接时,我希望应用程序进入 中的 元素设置: 链接是这样的: ...

回答 1 投票 0

Blazor 自定义下拉列表,具有 HTML 选择并按文本排序,而不是枚举值

我正在尝试为枚举构建一个自定义 Blazor 下拉组件,该组件能够按枚举成员的显示值/文本对其进行排序。我有以下代码: 我正在尝试为枚举构建一个自定义 Blazor 下拉组件,该组件能够按枚举成员的“显示值/文本”对枚举成员进行排序。我有以下代码: <div> <select value="@this.SelectedValue" @onchange="@this.OnSelectedValueChanged" @key="@this.Items"> @foreach (var value in this.Items) { // Use enum value as value and display name as text. if (value is Enum enumName) { <option id="@value" value="@value">@enumName.GetDisplayName(CultureInfo.CurrentCulture)</option> } } </select> </div> 排序顺序枚举: public enum SortOrder { None, Ascending, Descending } 在文件后面的代码中: private List<TItem?> OriginalItems { get; set; } = []; [Parameter] [EditorRequired] public IEnumerable<TItem?> Items { get; set; } = []; [Parameter] public TItem? SelectedValue { get; set; } [Parameter] public EventCallback<TItem?> SelectedValueChanged { get; set; } [Parameter] public EventCallback<TItem?> OnValueChanged { get; set; } [Parameter] public SortOrder SortOrder { get; set; } protected override void OnInitialized() { base.OnInitialized(); this.OriginalItems = this.Items.ToList(); this.SortItems(); } protected async Task OnSelectedValueChanged(ChangeEventArgs args) { if (args.Value is not string value) { return; } if (this.SelectedValue is Enum _) { try { var result = (TItem?)Enum.Parse(typeof(TItem?), value); await this.SelectedValueChanged.InvokeAsync(result); await this.OnValueChanged.InvokeAsync(result); } catch { // ignored } } } private void SortItems() { if (this.SortOrder == SortOrder.None) { return; } if (typeof(TItem).BaseType == typeof(Enum)) { this.Items = this.SortOrder == SortOrder.Ascending ? [.. this.Items.OrderBy(f => (f as Enum)?.GetDisplayNameForEnum(CultureInfo.CurrentCulture))] : [.. this.Items.OrderByDescending(f => (f as Enum)?.GetDisplayNameForEnum(CultureInfo.CurrentCulture))]; } } GetDisplayValue函数仅获取枚举的显示值,并为放入下拉列表中的所有枚举实现,例如: private static string GetDisplayName(this SortOrder order, CultureInfo culture) { var de = culture.Name.StartsWith("de"); return order switch { SortOrder.None => de ? "Keine" : "None", SortOrder.Ascending => de ? "Aufsteigend" : "Ascending", SortOrder.Descending => de ? "Absteigend" : "Descending", _ => $"[[{type}]]" }; } 还有一个用于过滤的输入字段、过滤方法、过滤器大小以及其他一些内容,例如设置的 id。但是,我删除了它们,因为它们与问题无关。 TItem 是一个通用成员(在我的例子中仅用于枚举)。 当我将组件添加到页面时,初始排序起作用。搜索作品。但是,当我选择其中一项时,排序将被忽略,并且 select 似乎会按枚举成员值回退/“排序”(例如,value= 的 option 中指定的内容)。有没有办法始终让 select 按显示名称排序,即使在值选择更改后(调用 OnSelectedValueChanged() 后)? 提示:在SortItems()结束时调用OnSelectedValueChanged()不起作用。 提示 2:在 SortItems() 中的 this.OriginalItems = this.Items.ToList(); 之前调用 OnInitialized() 也没有帮助。 提示 3:对列表进行排序后,使用 this.Items 的列表索引作为选择中的值不起作用,并且会降级,即所选值已正确设置,但不再显示在下拉列表中。 我现在想出的解决方案是重写 SortItems 函数以返回一个值,无论集合是否更改(例如重新排序),然后使用 OnAfterRender() 调用 StateHasChanged()。 变化: protected override void OnAfterRender(bool firstRender) { if (!firstRender) { if (this.SortItems()) { this.StateHasChanged(); } } base.OnAfterRender(firstRender); } private bool SortItems() { if (this.SortOrder == SortOrder.None) { return false; } if (typeof(TItem).BaseType == typeof(Enum)) { var initialItems = this.Items.ToList(); this.Items = this.SortOrder == SortOrder.Ascending ? [.. this.Items.OrderBy(f => (f as Enum)?.GetDisplayName(CultureInfo.CurrentCulture))] : [.. this.Items.OrderByDescending(f => (f as Enum)?.GetDisplayName(CultureInfo.CurrentCulture))]; return !Enumerable.SequenceEqual(initialItems, this.Items); } return false; }

回答 0 投票 0

Blazor 8 Web 应用程序在 Azure AD 重定向后进入无限循环并且无法登录

我正在使用 Blazor 8 WebApp 和 Azure AD OIDC 身份验证。一切都在本地工作,但在服务器上,身份验证后,我可以看到重定向无限发生,直到 cookie ......

回答 1 投票 0

razor.g.cs文件出错,在VS中找不到,找不到_razor.g.cs文件

我在 .razor 文件和 _razor.g.cs 文件中收到“;预期”错误, 在以前的 blazor 版本中,我在解决方案文件夹中找到这些 g.cs 文件,现在我在那里找不到它们,并且

回答 2 投票 0

Blazor .NET 8 - 暂存启动配置文件未启动网站 VS2022

我有一个 Blazor .NET 8 应用程序,我试图让它在 VS2022 的暂存中运行,以便应用配置转换: 设置启动配置文件如下: 当我运行我的应用程序时,我可以看到...

回答 1 投票 0

MVC 核心上的 Blazor 服务器在加载 blazor.server.js [.NET8] 时出现错误 500

所以我正在使用最新的 .NET 8 在我们现有的 MVC 核心项目上测试这个 blazor 服务器, 运行时总是显示此错误: 该请求匹配多个端点。匹配: Blazor 静态...

回答 1 投票 0

Blazor .NET 8 - FluentDialogProvider 面板未显示

我正在尝试让 FluentDialogProvider 正常工作,以便它会显示一个面板。这是我收到的错误: 警告:Microsoft.AspNetCore.Components.Server.Circuits.RemoteRenderer[100] 未处理

回答 1 投票 0

表单提交时发生回发,Blazor 模型在表单提交时重置

我正在初始化产品列表并通过 UI 更新数量。 在表单提交时,我正在调用 CheckOutTickets ,想要获取更新的上下文并将其发送到处理中。 但每次...

回答 1 投票 0

Blazor 模型在提交表单时重置

我正在初始化产品列表并通过 UI 更新数量。 在表单提交时,我正在调用 CheckOutTickets ,想要获取更新的上下文并将其发送到处理中。 但每次...

回答 1 投票 0

在读取表单之前验证请求中的“IAntiforgeryValidationFeature”

我有一个使用 asp.net core 身份设置的 Blazor 服务器 Web 应用程序,当我登录时一切正常,但如果我注销,则会收到此错误: 处理 r 时发生未处理的异常...

回答 1 投票 0

有没有办法从 SyncFusion Scheduler 工具提示中删除日期?

我正在创建一个周计划,它会一遍又一遍地重复,使得任何日期都变得无关紧要。为此,我将 SyncFusion 的 Scheduler 与 Blazor 结合使用。我已经从大多数其他地方删除了日期,但它仍然...

回答 1 投票 0

在 blazor 8.0 中使用多个连接字符串

我想在“builde”之后检查program.cs“force”,当应用程序加载时,如果它是本地的(127.0.0.1),它将使用本地数据库(LocalConnection),如果是的话。 ..

回答 1 投票 0

键入的配置类在 Blazor 自动渲染模式页面中不起作用(并且需要关于自动渲染模式的良好学习资源的提示)

我正在学习 Blazor,目前正在使用自动渲染模式(又名交互式自动)开发个人项目。希望你们中的一些专家用户可以帮助我解决一些菜鸟问题。 有没有

回答 1 投票 0

提供了 getaccesstoken 身份验证方案名称,但说不是

在 Blazor 组件中,我想调用目前托管在同一应用程序中的 API。在我添加身份验证和授权之前,这一直有效。从我的浏览器调用 API ...

回答 1 投票 0

PersistentComponentState 相对于 MemoryCache 有什么优势吗?

对于 Blazor InteractiveServer 渲染模式,Microsoft 文档建议在预渲染调用中我(和您)读取页面所需的数据并将其保存到 PersistentComponentState。 ...

回答 1 投票 0

如何注销微软账户?

我们使用Azure获取用户凭据并将它们存储在会话中。当按下注销时。我们运行以下命令: if (authState.User.Identity.IsAuthenticated) { 等待 SignOutManager。

回答 2 投票 0

blazor dotnet 8 getaccesstoken 身份验证方案名称已提供,但说不是

在 Blazor 组件中,我想调用目前托管在同一应用程序中的 API。在我添加身份验证和授权之前,这一直有效。从我的浏览器调用 API ...

回答 1 投票 0

我们如何覆盖MFA

我们使用Azure获取用户凭据并将它们存储在会话中。当按下注销时。我们运行以下命令: if (authState.User.Identity.IsAuthenticated) { 等待 SignOutManager。

回答 1 投票 0

Blazor - 我们如何覆盖 MFA

我们使用Azure获取用户凭据并将它们存储在会话中。当按下注销时。我们运行以下命令: if (authState.User.Identity.IsAuthenticated) { 等待 SignOutManager。

回答 1 投票 0

.net 8 中的服务器端 Blazor 组件,@onclick 事件未触发

在 .net 7 中的 Blazor 服务器中,我可以在 Page.blazor 中执行此操作: @信息 发送消息 @科德...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.