标签: blazor-server-side

MatBlazor 选择问题

我的代码应该是这样的,但它得到了空引用异常

 <MatSelect Label="At?k Tipi" @bind-Value="@SecilenAtikGrubu.GrupId" Style="width:100%">
      @foreach (var item in TumAtikTipleri)
     {
        <MatOption Value="@item.Id">@item.Deger1</MatOption>
     }
 </MatSelect>
Run Code Online (Sandbox Code Playgroud)

但是当我这样使用时,它正在工作

  <select class="mdc-select__native-control" @bind="SecilenAtikGrubu.GrupId">
     @foreach (var item in TumAtikTipleri)
     {
         <option value="@item.Id">@item.Deger1</option>
     }
  </select>
Run Code Online (Sandbox Code Playgroud)

绑定值类如下(SecilenAtikGrubuTumAtikTipleri

 public class GrupKodlari : KayitBilgisi
{
    [Key]
    public int Id { get; set; }
    public string Tur { get; set; }
    public string Isim { get; set; }
    public string Deger1 { get; set; }
    public string Deger2 { get; set; }
    public string Deger3 …
Run Code Online (Sandbox Code Playgroud)

blazor blazor-server-side matblazor

3
推荐指数
1
解决办法
2031
查看次数

如何通过 IdentityServer4 将 OpenIdConnect 添加到 ASP.NET Core ServerSide Blazor Web 应用程序?

我做了以下(它应该工作但它没有),没有重定向,没有错误,没有任何东西,它只是显示没有身份验证的页面,我做错了什么?


ASP.NET Core 3.1 Blazor

步骤 1.安装包 Microsoft.AspNetCore.Authentication.OpenIdConnect

步骤 2.编辑 Statup.cs

在“ConfigurationServices”下添加

        services.AddAuthentication(options =>
        {
            options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
            options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
        })
        .AddCookie()
        .AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme, options =>
        {
           options.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
           options.Authority = "http://localhost:5000";
           options.RequireHttpsMetadata = false; //false for development only
           options.ClientId = "mywebclient";
           options.ResponseType = "code";
           options.UsePkce = true;
           options.Scope.Add("profile");
           options.Scope.Add("offline_access");
           options.SaveTokens = true;
        });
Run Code Online (Sandbox Code Playgroud)

在“配置”下添加

        ...
        services.AddAuthorization();

        app.UseStaticFiles();

        app.UseRouting();


        app.UseAuthentication();
        app.UseAuthorization();

        ....
Run Code Online (Sandbox Code Playgroud)

步骤 3.将属性 Authorize 添加到 blazor 页面

        @page "/item"
        @attribute [Authorize] 
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-core blazor blazor-server-side

3
推荐指数
1
解决办法
6255
查看次数

在 Blazor 的客户端上播放声音?

我有一个服务器托管的 Blazor 应用程序,我试图弄清楚单击按钮时如何在客户端播放声音(不接触 JavaScript,呃)。

我试过的:

@page "/"

<h1>Hello, world!</h1>

<audio src="alert.wav"></audio>
<button @onclick="@btnAlarm_handleClick">ALARM</button>

@code {

   void btnAlarm_handleClick()
   {
      // ???
   }
}

Run Code Online (Sandbox Code Playgroud)

c# blazor blazor-server-side

3
推荐指数
2
解决办法
5199
查看次数

如何在剃刀页面外的类中使用 NavigationManager?

我有一个单例类 Globals,我喜欢有一个静态方法来导航到我的应用程序中的其他页面。

public class Globals
{
    public static async void openBlazorPage( string pageName )
    {
        await Task.Run( () => { NavigationManager.NavigateTo( pageName ); } );
    }
}
Run Code Online (Sandbox Code Playgroud)

但我无法访问此类中的 NavigationManager。

  • 如何在剃刀页面之外的类中访问 NavigationManager?

blazor blazor-server-side blazor-client-side

3
推荐指数
1
解决办法
1442
查看次数

如何将带有参数的 onclick 添加到 Blazor 中的按钮?

我在 Blazor 服务器端应用程序中有以下代码:

<div class="table-responsive">
    <table class="table">
        <thead>
            <tr>
                <th>Email</th>
                <th>Name</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var applicationUser in ApplicationUsers)
            {
                string userId = applicationUser.Id;
                Guid? personId = applicationUser.PersonId;

                <tr>
                    <td>@applicationUser.Email</td>
                    <td>@applicationUser.PersonName</td>
                    @if (personId != null)
                    {
                        <td>
                            <button class="btn btn-block btn-primary" @onclick="() => ShowEditPersonDialog(personId)" style="color: rgb(255, 255, 255); background-color: rgb(49, 56, 215);" @type="button">Edit Person</button>
                        </td>
                    }
                </tr>
            }
        </tbody>
    </table>
</div>
Run Code Online (Sandbox Code Playgroud)

然而这个:

@onclick="() => ShowEditPersonDialog(personId)"

...不起作用。由于它在组件上方加载,直到第一行的第一个按钮(有 4 个用户 - 应加载 4 行),然后按钮无法正确呈现并引发未处理的异常:

Blazor 应用程序异常

我试过了:

  • @onclick="() => ShowEditPersonDialog(personId)" - 上面显示的异常
  • @onclick="(e) => …

c# razor razor-pages blazor blazor-server-side

3
推荐指数
1
解决办法
614
查看次数

如何在 .NETCore 3.1 和 Blazor 中创建 DbContextFactory

我正在遵循有关如何设置 EF Core 以在 Blazor 和 .NET Core 3.1 中安全工作的指南。MS 文档在这里:https : //docs.microsoft.com/en-us/aspnet/core/blazor/blazor-server-ef-core?view=aspnetcore-3.1

在说明中,建议创建一个 DbContextFactory,用于在每个服务中创建一个 dbcontext。在 Blazor 世界中一切都有意义,但代码不会编译,因为 AddDbContextFactory 不存在。如果在 .Net Core 3.1/EF Core 3 中有另一种方法可以做到这一点 - 我看不到它。

services.AddDbContextFactory<ContactContext>(opt =>
    opt.UseSqlite($"Data Source={nameof(ContactContext.ContactsDb)}.db")
    .EnableSensitiveDataLogging());
Run Code Online (Sandbox Code Playgroud)

entity-framework .net-core blazor blazor-server-side

3
推荐指数
2
解决办法
4520
查看次数

用于服务器端 blazor 的 Azure 应用程序洞察?

我有一个服务器端 blazor 应用程序,我想使用 azure 应用程序洞察来监控它。目前,我只看到在启动应用程序和关闭应用程序时发送的请求,中间没有任何内容......我找不到微软提供的任何支持 Blazor 的文档。

是否可以让 Azure Application Insights 与服务器端 Blazor 完全配合使用?如果是这样,有没有人知道有关此的任何指南?

azure-application-insights blazor blazor-server-side

3
推荐指数
2
解决办法
1485
查看次数

blazor-server 组件中的 CSS 隔离

使用新的 .NET 5 预览版 CSS 隔离来了 blazor。有人知道,是否可以在 blazor 服务器中使用 CSS 隔离?

我玩了很多,但在我的 blazor 服务器应用程序中,CSS 隔离不起作用。还是此功能仅在 blazor WebAssembly 中可用?

所以我试了一下:

  • 创建一个新的 blazor 组件,例如 test.razor
  • 创建名为 test.razor.css 的组件 CSS 文件,并在此文件中写入 CSS 代码
  • 现在启动 blazor-server 应用程序,但不会添加静态 CSS 文件,也找不到 CSS 类。

TargetFramework 是“net5.0”。安装的 dotnet 版本是“5.0.100-rc.2.20479.15”。

问候丹尼尔

blazor blazor-server-side blazor-component

3
推荐指数
1
解决办法
1600
查看次数

Mudblazor DatePicker 绑定仅以一种方式工作

我一直在尝试使用 Date 将 mudblazor datepicker 绑定到 DateTime 属性。

<MudDatePicker Label="Start Date" Date="@StartDate" />
<MudTextField Label="SelectedDate" @bind-Value="@StartDate" />
<MudText Typo="Typo.h3">Selected Date is: @StartDate</MudText>

@code
    {
        public DateTime StartDate { get; set; }
        public string DateString { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

我已经在他们的网站和 Visual Studio 中尝试过这段代码当离开文本字段时,代码将更新日期选择器和我的文本输出,这是正常行为。但是,我想根据我选择的日期选择器更改文本。我试过绑定日期和价值。两者都没有反映我所做的选择。

我已经检查了他们网站上的文档,除了我正在做的事情之外,没有任何关于如何处理绑定的信息。

如果有人知道如何在 mudblazor 中绑定日期选择器,请帮忙。谢谢

blazor-server-side .net-5 mudblazor

3
推荐指数
1
解决办法
762
查看次数

Blazor InvokeAsync 与 await InvokeAsync

编辑:为了澄清起见,这是在 Blazor 服务器应用程序中

我对 InvokeAsync 的正确用法和更新 UI 感到困惑。该文档有多种用法,但没有真正解释等待或不等待的原因。我也看到了一些相互矛盾的线索,但没有多少支持他们的推理。

使所有方法异步以等待 InvokeAsync(StateHasChanged) 似乎是错误的,我在某处读到引入 InvokeAsync 的原因是为了防止在任何地方都需要异步代码。但是在什么情况下我可能想要等待它?

等待:

https://docs.microsoft.com/en-us/aspnet/core/blazor/components/?view=aspnetcore-5.0&viewFallbackFrom=aspnetcore-3.0#invoke-component-methods-externally-to-update-state

非等待丢弃:

https://docs.microsoft.com/en-us/aspnet/core/blazor/components/rendering?view=aspnetcore-5.0

以下是我见过的一些不同用法的示例,如果有人可以解释或分享有关它们之间某些差异的信息的链接,那就太好了(谢谢!)

public void IncrementCounter()
{
    _counter++;
    InvokeAsync(StateHasChanged);
}
Run Code Online (Sandbox Code Playgroud)
public void IncrementCounter()
{
    InvokeAsync(() => 
    {
        _counter++;
        StateHasChanged);
    }
}
Run Code Online (Sandbox Code Playgroud)
public async Task IncrementCounter()
{
    _counter++;
    await InvokeAsync(StateHasChanged);
}
Run Code Online (Sandbox Code Playgroud)
public async Task IncrementCounter()
{
    await InvokeAsync(() =>
    {
        _counter++;
        StateHasChanged();
    });
}
Run Code Online (Sandbox Code Playgroud)

asynchronous invoke async-await blazor blazor-server-side

3
推荐指数
1
解决办法
825
查看次数