标签: blazor

.Net Blazor优于Angular,React或其他JavaScript框架

微软.Net Blazor的主要特点是什么?我们可以用它代替React或Angular吗?Blazor会提供Angular或React提供的所有工具吗?

c# asp.net-core blazor

25
推荐指数
1
解决办法
2万
查看次数

在 Blazor 组件中获取当前用户

我正在使用 Blazor 和 Windows 身份验证启动一个新站点,并且需要识别查看页面/组件的当前用户。

对于 Razor 页面,可以使用 访问当前用户名Context.User.Identity.Name,但这在 Blazor 组件中似乎不起作用。我尝试将 HttpContext 注入组件,但 Context 在运行时为空。

作为奖励,我最终希望将其合并到 Startup.cs 中,因此我只需要获取一次用户名,就可以为我的应用程序利用企业用户类(使用 EF Core)。也将不胜感激针对该用例量身定制的答案。

asp.net-core blazor blazor-server-side .net-core-3.0 ef-core-3.0

25
推荐指数
7
解决办法
3万
查看次数

Blazor WASM Net 6 Preview 4 Azure AD - 尝试登录时出错:“无法读取未定义的属性‘toLowerCase’”

我有一个运行 Net 6 Preview 4 的简单 Blazor WASM,我使用本指南进行设置:

https://learn.microsoft.com/en-us/aspnet/core/blazor/security/web assembly/hosted-with-azure-active-directory?view=aspnetcore-6.0

确切的代码与 Net 5.0 完美配合(使用相应的 Net 5.0 程序集)

但是,当我升级到 Net 6 时,我收到以下身份验证错误:

There was an error trying to log you in: 'Cannot read property 'toLowerCase' of undefined'
Run Code Online (Sandbox Code Playgroud)

我似乎也无法获得更多细节。这是在 Azure 应用服务自包含发布上发布的。

在此输入图像描述

代码可以在这里找到: https ://github.com/aherrick/BlazorWASM.Net6Prev4.AzureAD

c# blazor blazor-webassembly .net-6.0

25
推荐指数
1
解决办法
7865
查看次数

使用 Blazor 应用程序从服务器下载文件

HttpGet在我的 Server-API 中创建了一个 CSV 文件并返回它FileStreamResult

[HttpGet]
public IActionResult Get() {
    // do logic to create csv in memoryStream

    return new FileStreamResult(memoryStream, "text/csv;charset=utf-8") {
        FileDownloadName = "products.csv",
    };
}
Run Code Online (Sandbox Code Playgroud)

在我的 Blazor-Client 应用程序中,我创建了一个带有处理程序的按钮:

private async Task DownloadCatalog() {
    var file = HttpClient.GetAsync("api/csvProduct");

    // ... how do I download the file in the browser?
}
Run Code Online (Sandbox Code Playgroud)

调用了控制器中的 Get,但我不知道该怎么做才能在 api 调用后将文件下载到浏览器中。

c# asp.net-core blazor

25
推荐指数
2
解决办法
5万
查看次数

我可以在 Visual Studio 的剃刀文件中删除“突出显示”吗?

我想尝试使用 blazor 并弄乱它并制作一些用于测试的东西。我真的很喜欢它,但唯一真正让我烦恼的是在编写 C# 的 razor 文件中突出显示序列。

剃刀文件中的高亮代码

我在上图中标出了一些“亮点”。有什么方法可以删除它,所以它看起来很正常,就像我在 .cs 文件中写入一样?

c# visual-studio blazor

24
推荐指数
1
解决办法
2826
查看次数

Blazor @page 路由 url 使用变量定义

我有一个关于 Blazor 服务器端的问题。

我想@page用变量或属性定义路由 url。

我现在可以使用以下默认方法

@page "/route-url"

<h1>Page Test</h1>

@code {
    
}
Run Code Online (Sandbox Code Playgroud)

但我想使用如下方法

@page MenuItem.Role

<h1>Page Test</h1>

@code {
    
}
Run Code Online (Sandbox Code Playgroud)

我尝试了上面的方法然后抛出异常。就像下面的异常一样。

C:\Projects\TestBlazorProject\Pages\TestPage.razor(1,7): error RZ1016: The 'page' directive expects a string surrounded by double quotes. [C:\Projects\TestBlazorProject\TestBlazorProject.csproj]
Run Code Online (Sandbox Code Playgroud)

如何@page使用任何不同的变量或任何类属性定义路由 url?

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

24
推荐指数
2
解决办法
9237
查看次数

“无法从 Blazor 中的绑定属性‘绑定值’推断出属性名称”

我刚刚将 Blazor 项目从 Core 3 Preview 6 迁移到了 Preview 8,现在出现此错误:

无法从绑定属性“绑定值”推断出属性名称。绑定属性应采用“bind”或“bind-value”形式,以及相应的可选参数,如“bind-value:event”、“bind:format”等。

我已经隔离了导致这种情况发生的组件,并且代码似乎bind-value按照错误消息中的说明进行了设置:

      <TelerikDropdownList Data="@State.ContainerSizes" 
                           ValueField=@nameof(ContainerSize.ContainerSizeId)
                           TextField=@nameof(ContainerSize.ContainerSizeName)
                           @bind-Value="@ContainerSizeIdNoNull"
                           >
      </TelerikDropdownList>
Run Code Online (Sandbox Code Playgroud)

我试过删除@from@bind-Value和更改大写@bind-Value等,但都无济于事。

什么可能导致这种情况?

c# blazor

23
推荐指数
4
解决办法
8591
查看次数

如何在 Blazor 客户端应用程序中使用 Bootstrap 模式?

我试图显示引导模式然后绑定它的按钮。但是我无法通过显示模态的第一步。我正在使用 .net core 3.1 的 Blazor 客户端模板。我有一个名为 Modal.razor 的页面,其中包含我从 getbootstrap.com 找到的引导模式。

@if (Show)
{
    <div class="modal" tabindex="-1" role="dialog">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <h5 class="modal-title">Modal title</h5>
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                        <span aria-hidden="true">&times;</span>
                    </button>
                </div>
                <div class="modal-body">
                    <p>Modal body text goes here.</p>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-primary">Save changes</button>
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                </div>
            </div>
        </div>
    </div>
}
@code {
    [Parameter]
    public bool Show { get; set; } = false;
}
Run Code Online (Sandbox Code Playgroud)

我在 index.razor 文件中调用了模态

@page "/" …
Run Code Online (Sandbox Code Playgroud)

razor .net-core blazor blazor-client-side

23
推荐指数
4
解决办法
2万
查看次数

自动重新连接 Blazor 服务器端

Blazor 服务器端(dotnet 核心 3.1)

我遇到了在客户方面显示的问题:

无法重新连接到服务器。重新加载页面以恢复功能。

每次我更新代码库或互联网时都会坏掉或类似的东西。

现在的目标是它应该在服务器再次返回时(或在某个时间间隔内)重新加载页面。

有什么可能可以帮助我吗?

.net-core blazor

22
推荐指数
3
解决办法
6568
查看次数

Blazor 中的 StateHasChanged() 与 InvokeAsync(StateHasChanged)

我知道调用该StateHasChanged()方法会通知组件状态已更改,因此它应该重新渲染。

但是,我也看到调用await InvokeAsync(StateHasChanged)await InvokeAsync(() => StateHasChanged())在其他人的代码中,但我不太明白它与其他人的代码有何不同StateHasChanged()以及应该在何处选择一个,以及为什么.

我能找到的唯一信息是Blazor 文档的这一部分,它说:

如果必须根据外部事件(例如计时器或其他通知)更新组件,请使用 InvokeAsync 方法,该方法分派到 Blazor 的同步上下文。

我不太明白这个。它只是说“......它调度到 Blazor 的同步上下文”,但我对此不太满意!什么是“Blazor 的同步上下文”?

我试过在 a的事件中调用StateHasChanged()- 而不是InvokeAsync(StateHasChanged)- ,它按预期工作,没有任何问题。我应该打电话吗?!如果是这样,为什么?我觉得这里可能有一些我不知道的重要细微差别。TimerElapsedawait InvokeAsync(StateHasChanged)

我也看到过类似的电话InvokeAsync(() => InvokeAsync(Something)),为什么?

另外,我有时也会看到InvokeAsync()没有调用await,那有什么关系?!

blazor blazor-server-side blazor-webassembly

22
推荐指数
1
解决办法
4983
查看次数