标签: blazor

在 Blazor 组件中使用 for 循环获取 ArgumentOutOfRangeException

我正在尝试 Blazor,当我尝试使用 for 循环加载复选框列表时遇到此异常。

我在这里创建了列表:

public List<Month> Months { get; set; }

protected override void OnInitialized()
        {
            List<Month> months = new List<Month>()
            {
                new Month{MonthId = 0, MonthName = "All Months", isMonthChecked = false},
                new Month{MonthId = 1, MonthName = "Jan", isMonthChecked = false},
                new Month{MonthId = 2, MonthName = "Feb", isMonthChecked = false},
                new Month{MonthId = 3, MonthName = "Mar", isMonthChecked = false},
                new Month{MonthId = 4, MonthName = "Apr", isMonthChecked = false},
                new Month{MonthId = 5, MonthName = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core blazor

0
推荐指数
1
解决办法
864
查看次数

为什么 Bootstrap 面板在 Blazor 客户端中不起作用?

我编译下面的代码以获得引导面板但没有成功

在此输入图像描述

@page "/test"
<h3>test</h3>

<div class="panel panel-primary">
    <div class="panel-heading">Panel with panel-primary class</div>
    <div class="panel-body">Panel Content</div>
</div>

@code {

}
Run Code Online (Sandbox Code Playgroud)

项目设置是 在此输入图像描述

bootstrap.main.cs 是

在此输入图像描述

wwwroot 文件夹如下所示

在此输入图像描述

索引.html

在此输入图像描述

razor .net-core blazor

0
推荐指数
1
解决办法
2078
查看次数

如何在 Blazor 中调用子组件的方法

我有Foo.razor

@foreach (var item in items) {
  <p>@item</p>
}

@code {
  private List<string> items = new List<string>();

  public void Append(string item) => items.Add(item);
}
Run Code Online (Sandbox Code Playgroud)

如果我有Bar.razor

<Foo/>

@code {
  public void SomeMethod() {
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能Append("something")从打电话SomeMethod()

blazor blazor-server-side

0
推荐指数
1
解决办法
3852
查看次数

使用路由时 Blazor 服务器错误 400 无法与服务器协商

Blazor 路由错误

描述错误

如所附屏幕截图所示,我正在使用路由:

@page“/addbrand/{BrandId:guid}”

当我刷新 url https://localhost:44379/addBrand/1abc52f3-c371-4566-847d-1a986f093396时,这会导致错误 400 无法加载资源,因为 balzor 协商的 url 更改为https://localhost:44379/addBrand /_blazor/negotiate?negotiateVersion=1 而不是 https://localhost:44379/_blazor/negotiate?negotiateVersion=1

https://localhost:44379/addBrand/_framework/blazor.server.js 而不是 https://localhost:44379/_framework/blazor.server.js

这发生在 _host.cshtml 文件中的所有链接上。

有例外吗?是的,浏览器控制台日志:[2020-03-23T21:57:35.846Z] 信息:将“_blazor”规范化为“ https://localhost:44379/addBrand/_blazor ”。_blazor/negotiate?negotiateVersion=1:1 无法加载资源:服务器响应状态为 400 () blazor.server.js:1 [2020-03-23T21:57:35.917Z] 错误:无法完成与服务器:错误

更多技术细节

  • ASP.NET核心版本:3.1
  • IDE:VS 2019

我已经在github上举报了

blazor blazor-server-side

0
推荐指数
1
解决办法
2288
查看次数

如何将 html/组件传递给 blazor 模板?

这是我的案例:

我有一个组件Foo,我希望它有一个名为 blazor 的模板Wrapper,该模板将用于包装 的某些Foo内容。

我需要做的是类似的事情

正常使用:

<Foo>
    <Wrapper>
        <div>
            <p>Something in the wraper</p>
            @context // context should be some content of Foo
        </div>
    </Wraper>
</Foo>
Run Code Online (Sandbox Code Playgroud)

里面Foo

@* Other content of Foo*@

@if(Wrapper != null){
    @* Pass to Wrapper some content of Foo *@
    Wrapper(@* How to render html/components here? *@)
}

@* Other content of Foo*@
Run Code Online (Sandbox Code Playgroud)

但是没有办法为模板传递html或组件吗?

我怎样才能做到这一点?

c# blazor asp.net-blazor

0
推荐指数
1
解决办法
5095
查看次数

Blazor - 将用户名级联到所有组件

我正在编写一个 Blazor 服务器端应用程序,并在项目中启用了 Windows 身份验证。

我无法使用基于角色/策略的身份验证(我无权更改用户角色/策略),而是从 SQL 数据库中获取一组用户名来检查当前用户的哪些部分他们可以访问导航菜单。

我正在努力让所有组件都可以使用 Windows 用户名,并且可以从 @code 部分进行访问。

我在 App.razor 中看到他们使用 CascadingAuthenticationState 组件和 AuthoriseView 组件

我知道您可以使用 @context.User.Identity.Name 来显示用户名,但我不确定如何从 @code 部分中访问 @context 来获取用户名。

我也尝试过此代码并在成功显示用户名的应用程序中:

[CascadingParameter]
    private Task<AuthenticationState> authenticationStateTask { get; set; }

    private string _authMessage;

    private async Task LogUsername()
    {
        var authState = await authenticationStateTask;
        var user = authState.User;

        if (user.Identity.IsAuthenticated)
        {
            _authMessage = $"{user.Identity.Name} is authenticated.";
        }
        else
        {
            _authMessage = "The user is NOT authenticated.";
        }
    }
Run Code Online (Sandbox Code Playgroud)

但我不喜欢在每个组件中重复类似异步代码的想法。

我的简单想法是创建一个“AuthorizationService”类并将其注册为单例。当页面首次加载时,这将从 SQL 中获取用户名集和当前用户,并且检查逻辑可以存在于其中。

我将它注入到每个组件中,对于 NavMenu,我可以使用 if …

authorization blazor

0
推荐指数
1
解决办法
1492
查看次数

Blazor 中的秒表组件

经过大量探索后,我们还没有 blazor 组件秒表。我需要在 blazor 页面中显示经过的时间下面是我的代码,我们可以使用开始和停止按钮计算经过的时间我有点困惑如何在 blazor 页面中调用和显示经过的时间。有什么建议吗?

@using System.Diagnostics;

<p> <button @onclick=@Start>Start</button></p>
<p> <button @onclick=@Stop>Stop</button></p>

@code
{    
    protected override void OnInitialized()
    {
        base.OnInitialized();
        Stopwatch sw = new Stopwatch();
        TimeSpan tt1 = TimeSpan.Zero;    
    }

    private double elapsedtime;
    private DateTime startTime;
    private DateTime stopTime;
    private bool running = false;

    public void Start()
    {
        this.startTime = DateTime.Now;
        this.running = true;
    }

    public void Stop()
    {
        this.stopTime = DateTime.Now;
        this.running = false;
    }

    public double ElapsedTimeSecs()
    {
        TimeSpan interval;
        if (running)
            interval = DateTime.Now …
Run Code Online (Sandbox Code Playgroud)

timer stopwatch blazor

0
推荐指数
1
解决办法
3422
查看次数

在 Blazor Web assembly 中从 .NET 读取 Javascript 变量

我是 Blazor Webassemble 的新手,了解如何从 .NET 代码调用 javascript 函数。我的问题是:是否也可以从 .NET 读取和写入 javascript 变量。这里有一个例子:

Javascript代码加载到页面中:

var Namespace1 = {
    prop1: 42, 
    func1: function () {
        return 42;
    }
}
Run Code Online (Sandbox Code Playgroud)

从.NET我可以调用函数Namespace1.func1:

@code { 
    //private int prop1 { get; set; } = 1;
    private int ret1 { get; set; }

    override protected async Task OnInitializedAsync() {
        // Error: The value 'window.Namespace1.prop1' is not a function.
        // ret1 = await JSRuntime.InvokeAsync<int>("Namespace1.prop1"); 
        ret1 = await JSRuntime.InvokeAsync<int>("Namespace1.func1");
        // return base.OnInitializedAsync();
    }
}
Run Code Online (Sandbox Code Playgroud)

是否也可以从.NET访问Namespace1.prop1

.net javascript blazor

0
推荐指数
1
解决办法
2603
查看次数

BlazorWebAssembly GetFromJsonAsync 未序列化子集合

问题是,为什么当我使用 HttClient .GetFromJsonAsync 从客户端调用 api 时,实体没有子集合?我从浏览器调用 api,JSON 文本有集合,但在对象上没有。

\n

这是我的实体的代码:

\n
using System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations.Schema;\n\nnamespace excelnobleza.shared.Models.Tablas.Produccion\n{\n    [Table("Lineas")]\n    public class Linea\n    {\n        public int Id { get; set; }\n        public string Nombre { get; set; }\n        public string Responsable { get; set; }\n        public string EmailResponsable { get; set; }\n        public virtual ICollection<Maquina> Maquinas { get; } = new HashSet<Maquina>();\n        public override string ToString() => this.Nombre;\n    }\n\n    public class Maquina\n    {\n        public int Id { get; set; }\n\n        [Required(ErrorMessage = "El nombre …
Run Code Online (Sandbox Code Playgroud)

c# .net-core blazor blazor-webassembly

0
推荐指数
1
解决办法
1074
查看次数

在不相关的组件上调用 OnSetParameterAsync

我目前正在开发一个使用 Blazor WebAssembly 作为前端框架的项目,但是,我认为我在状态管理方面遇到了一些复杂情况。这个问题发生在一个大型复杂的解决方案中,因此我重新创建并简化了它,这样我就可以在这里简洁地描述它,而不会显得臃肿。

我有一个包含两个组件的页面:朋友列表和关注者列表,每个组件都有一个按钮来切换按升序或降序对列表进行排序。

如果我重写并在FollowerList组件内部的OnParametersSetAsync上放置一个断点,然后单击FriendList组件的排序按钮,它会命中我在FollowerList组件上设置的断点。

我的印象是,只有当提供给该组件的属性发生更改或其状态发生更改时,才会在该组件上调用OnParametersSet/Async。在下面的代码中,您可以看到我有两个单独的列表,一个被馈送到一个组件,一个被馈送到另一个组件,所以我不确定如何在未触及的组件上触发此方法......

因此我的问题是:为什么它会在不相关的组件上遇到断点?这是故意行为吗?

页面预览

索引页,包含两个列表

索引剃刀

@page "/"
<button value="Sort Friends" @onclick=SortFriends>Sort Friends</button>
<FriendList Friends=SortedFriends />

<button value="Sort Followers" @onclick=SortFollowers>Sort Followers</button>
<FollowerList Followers=SortedFollowers />
Run Code Online (Sandbox Code Playgroud)

Index.cs(隐藏代码)

using StateManagementTest.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace StateManagementTest.Pages
{
    public partial class Index
    {
        public List<Friend> MyFriends { get; set; }
        public List<Friend> SortedFriends { get; set; }

        public List<Follower> MyFollowers { get; …
Run Code Online (Sandbox Code Playgroud)

c# blazor blazor-client-side blazor-webassembly

0
推荐指数
1
解决办法
654
查看次数