小编bae*_*999的帖子

自动重新连接 Blazor 服务器端

Blazor 服务器端(dotnet 核心 3.1)

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

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

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

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

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

.net-core blazor

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

Blazor.NET:是什么导致 JavaScript 中的“任务被取消”

我有一个带有库的服务器端 Blazor.NET 应用程序(dotnet core 3.1): ProtectedBrowserStorage ( https://www.nuget.org/packages/Microsoft.AspNetCore.ProtectedBrowserStorage ) 用于客户端浏览器中的加密存储

有时我的日志文件中会出现如下错误:

2020-04-01 14:05:17.4809 Error System.Threading.Tasks.TaskCanceledException: A task was canceled.
   at Microsoft.JSInterop.JSRuntime.InvokeWithDefaultCancellation[T](String identifier, Object[] args)
   at Microsoft.AspNetCore.ProtectedBrowserStorage.ProtectedBrowserStorage.GetAsync[T](String purpose, String key)
   at PegasusV6.LocalStorageService.LoadBasket(MenuDTO menu) in LocalStorageService.cs:line 40 A task was canceled. 
Run Code Online (Sandbox Code Playgroud)

我的问题是我不知道是什么导致了 JavaScript 调用中的这个错误。

是否有可以修复此类错误的服务器限制?

或者是客户端用户可能没有良好的互联网速度/连接,这是服务器端 Blazor 非常需要的?

希望有人能给我一个提示或任何可以改进它的东西。这是调用的 C# 函数:

    public async Task LoadBasket(MenuDTO menu)
    {
        try
        {
            AppState.BasketData = await ProtectedLocalStore.GetAsync<BasketState>($"Basket_{My.StoreId}") ?? new BasketState();
        }
        catch (Exception ex)
        {
            My.Log.Error(ex);
            AppState.BasketData = new BasketState();
        }
    }
Run Code Online (Sandbox Code Playgroud)

谢谢!

blazor

8
推荐指数
2
解决办法
2564
查看次数

Blazor InputText 在 TextChanged 时调用异步方法

我尝试捕获 Blazor(服务器端)中 InputText 的文本更改,然后调用异步方法来检查输入是否是正确的优惠券代码。

HTML:

<EditForm Model="@Basket" OnValidSubmit="@CommitBasket">
    Gutscheincode
    <InputText class="coupon-input checkout-control pristine untouched" 
            @bind-Value="CouponCode"
            @onchange="CouponCodeChanged">
    </InputText>
    @CouponText
</EditForm>`
Run Code Online (Sandbox Code Playgroud)

但是 CouponCodeChanged 没有引发 - OnKeyUp 没有用,因为文本值在该状态下没有改变......

这是 C# 方法:

public async Task CouponCodeChanged(ChangeEventArgs args)
{
    using var client = ClientFactory.CreateClient();
    var result = await ApiCalls.GetCouponCodeData(client, AppState.BaseUrl, 2, CouponCode);
    CouponText = result== null ? "NOT FOUND" : $"exists:{result.Exists} amount:{result.Amount}";
}
Run Code Online (Sandbox Code Playgroud)

有谁提示或想法如何以方便的方式解决这个问题?

谢谢!

blazor

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

Blazor:组件记录列表无效

使用 Blazor dotnet core 3.1 并收到此错误:

The list of component records is not valid
Run Code Online (Sandbox Code Playgroud)

发现关于此的错误报告已于 2019 年 12 月关闭:https : //github.com/dotnet/aspnetcore/issues/14966 在此处输入图片说明 看不到此错误的任何原因,并希望有一种解决方法(不能在每个页面调用时都出现此错误,这种情况很少发生......)。

有没有人有可能导致这种情况的想法/提示?

谢谢!

blazor

5
推荐指数
3
解决办法
2101
查看次数

Blazor 动态设置 CSS 文件

我正在寻找一个想法来覆盖“_Host”文件中的 css 文件路径以使其动态(属于用于访问 Blazor 网页的域)。

将服务器端 Blazor 与 dotnet core 3.0 结合使用

有没有人知道如何在运行时覆盖 CSS?

谢谢!

blazor

4
推荐指数
1
解决办法
3785
查看次数

带有 C# 代码的 Blazor 中的动态 _Hosts.cshtml 文件

刚刚使用 DevExpress 的免费 Blazor 代码<HEAD>在运行时实现自定义数据:

_Hosts.cshtml(参见元素中的代码片段):

    <!DOCTYPE html>
    <html lang="en">
    <head>
        @(await Html.RenderComponentAsync<DocumentMetadataComponent>(RenderMode.ServerPrerendered))
    </head>
    <body>
        <app>
            @(await Html.RenderComponentAsync<App>(RenderMode.ServerPrerendered))
        </app>
    <script src="_framework/blazor.server.js"></script>
</body>
Run Code Online (Sandbox Code Playgroud)

到目前为止效果很好(可以使标题、描述等动态化)。

现在的问题是我必须在顶层设置一些变量来过度使用和解释一次。我想知道使用的 url 并动态提供一些数据。

但以我现在的知识,我只能在每个组件(DocumentMetadataComponent + App)中做两次。

我在 MainLayout.razor 中获取数据:

<CascadingValue Value="StoreData" Name="StoreData">
    @Body
</CascadingValue>

@code{
    public StoreCompleteDTO StoreData { get; set; }

    protected override async Task OnInitializedAsync()
    {
        using var tl = new TimeLogger($"MainLayout.razor OnInitializedAsync()");

        StoreData = await AppState.GetStoreData(My.StoreId);
    }
}
Run Code Online (Sandbox Code Playgroud)

这个 StoreData 变量必须在动态元数据中可用,因为我必须为其他商店选择不同的 CSS 文件...

希望解释清楚。

目标是只调用一次: StoreData = await AppState.GetStoreData(My.StoreId);

因为它是网络服务调用并且需要花费时间......

谢谢!

blazor

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

Blazor .Net 服务器端在哪里加载 LocalStorage 数据

我在 .NET Core 3.0 上使用 Blazor Preview 9 服务器端以及用于在浏览器的本地存储中加载和保存数据的 nuget 包 Blazored.LocalStorage。

现在我想在加载应用程序时在需要时加载它一次。

为此,我需要使用 OnFirstRenderer,因为它必须完全位于客户端才能访问它的浏览器缓存。现在我使用页面“/”(Index.razor),但我不太确定这是否是正确的锚点或执行此操作的方法:

[Parameter]
public string Test { get; set; }

protected async override Task OnAfterRenderAsync(bool firstRender)
{
    try
    {
        if (firstRender)
        {
            await localStorage.SetItemAsync("TEST", "Hallo Welt");
        }

        if (Test == null)
        {
            Test = await localStorage.GetItemAsync<string>("TEST");
            StateHasChanged();
        }            
    }
    catch (Exception ex)
    {
        throw;
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,我不知道如何使其适用于所有组件:

使用全局变量创建服务并将其注入每个组件或通过 CascadingValue 方法执行它是最好的方法吗?

谢谢!

storage .net-core blazor

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

标签 统计

blazor ×7

.net-core ×2

storage ×1