标签: blazor-server-side

如何启用 Blazor 热重载

观看 Dan Roth 的 Blazor 演示(2020 年 1 月 15 日)后,对 razor 文件的代码更改已刷新到浏览器,而无需停止|构建|运行周期。在我的 VS2019(最新)上,我没有得到热重载。这是来自标准模板的新 Blazor SS 项目。是否需要设置某个属性才能启用它?

我尝试了 dotnet run watch 但没有区别

blazor-server-side

7
推荐指数
1
解决办法
7067
查看次数

当在服务器端的 Blazor 下使用 SignInManager.SignInAsync(.......) 时,它会引发异常

我正在学习服务器端 blazor 并尝试学习身份验证。每当我使用 SignInManager.SignInAsync(.......) 时,它都会引发以下异常:

System.InvalidOperationException:无法修改响应标头,因为响应已开始。 在 Microsoft.AspNetCore.HttpSys.Internal.HeaderCollection.ThrowIfReadOnly() 在 Microsoft.AspNetCore.HttpSys.Internal.HeaderCollection.set_Item(String key, StringValues value) 在 Microsoft.AspNetCore.Http.ResponseCookies.Append(String key, String value, CookieOptions 选项) 位于 Microsoft.AspNetCore.Authentication.Cookies.ChunkingCookieManager.AppendResponseCookie(HttpContext context、String key、String value、CookieOptions options) 位于 Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler.HandleSignInAsync(ClaimsPrincipal 用户、AuthenticationProperties 属性) 位于 Microsoft。 AspNetCore.Authentication.AuthenticationService.SignInAsync(HttpContext 上下文、字符串方案、ClaimsPrincipal 主体、AuthenticationProperties 属性) 位于 Microsoft.AspNetCore.Identity.SignInManager 1.SignInWithClaimsAsync(TUser user, AuthenticationProperties authenticationProperties, IEnumerable1 extraClaims),位于 C:\my_work\Blazor_learning\GroupMembersInfo 中的 GroupMembersInfo.Pages.RegisterUser.Register() \Pages\RegisterUser.razor:第 52 行位于 Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(任务任务)位于 Microsoft.AspNetCore.Components.Forms.EditForm.HandleSubmitAsync()
位于 Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion(任务任务) )在 Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(任务 taskToHandle)

我认为异常是从我突出显示的方法中抛出的。那么我该如何缓解这个问题。这是我的代码

启动程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Components;
using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using …
Run Code Online (Sandbox Code Playgroud)

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

7
推荐指数
1
解决办法
5175
查看次数

如何通过单击按钮将另一个 Razor 组件加载到 Razor 组件中?

我只想在用户单击搜索按钮时将剃刀组件加载到另一个剃刀组件中,然后当用户单击隐藏按钮时将搜索剃刀组件(页面)显示到隐藏的 div 中,然后它将被隐藏。就像内联弹出窗口一样。

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

7
推荐指数
1
解决办法
5739
查看次数

在 Blazor 服务器应用中检测服务器预渲染

OnInitializedAsync有没有办法从生命周期方法中检测 Blazor 组件中是否正在进行预渲染?我知道组件工作流程会调用OnInitializedAsync两次,第一次用于预渲染,第二次用于实际渲染。最后,OnAfterRenderAsync一次性调用该方法进行实际渲染。

但是,我需要检测OnInitializedAsync. 这样我就可以在预渲染中进行一些更改,并在实际渲染中阻止它,反之亦然。

我检查了下面的 GitHub 问题,但没有有效的解决方案。我希望,它应该在像IsPrerendering.

https://github.com/dotnet/aspnetcore/issues/17282

提前致谢。

prerender blazor blazor-server-side

7
推荐指数
1
解决办法
4761
查看次数

Blazor 选择下拉列表通过代码设置活动值

我根据列表的内容动态填充下拉列表的值。当选择下拉列表中的某个项目时,会显示删除该项目的选项。当项目被删除时,它首先从列表中删除,然后重建下拉列表,这就是我遇到问题的地方。重建下拉列表时,不会将其返回到默认值,而是将删除的下拉列表下方的值显示为已选择(这种情况会在@onchange 值被触发时发生)。重建时如何使下拉列表恢复到默认值?

这是一些代码,Razor 代码:

<select class="form-control" @onchange="selectedValue">
   <option value="">select one</option>
   @foreach (var mod in values)
   {
        <option value="@mod.Id">@mod.Name</option>
   }
</select>
Run Code Online (Sandbox Code Playgroud)

填充列表的名为 Items 的类:

public class Items
{
    public string Name { get; set; }
    public int Id { get; set; }
    public Items(string name, int id)
    {
        Name = name;
        Id = id;
    }
}
Run Code Online (Sandbox Code Playgroud)

列表本身(在填充之前):

public List<Items> itm = new List<Items>();
Run Code Online (Sandbox Code Playgroud)

名为 onchange 的函数:

public string SelectedValue = "";
public void selectedValue(ChangeEventArgs selectEvent)
{
    SelectedValue = selectEvent.Value.ToString(); …
Run Code Online (Sandbox Code Playgroud)

html-select onchange drop-down-menu blazor blazor-server-side

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

Blazor 使用 Azure AD 身份验证允许匿名访问

我目前正在编写一个(服务器端)Blazor 应用程序,其中包含默认的 AzureAD 身份验证。

这对于经过身份验证的用户来说效果很好 - 挑战入口 ( _Host.cshtml) 文件,重定向,然后在经过身份验证后返回。

我需要有几个页面不需要身份验证 - 我不希望用户受到质询并重定向到 Microsoft。

这样做的正确方法是什么?我已经尝试过AllowAnonymousAttribute剃刀AllowAnonymousToPage页面选项,似乎没有什么可以阻止挑战。

任何帮助将不胜感激!

以下是我的身份验证设置(ConfigureServices):

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
        .AddAzureAD(options => Configuration.Bind("AzureAd", options));

    services.AddControllersWithViews(options =>
{
    var policy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();
    options.Filters.Add(new AuthorizeFilter(policy));
});

    services.AddRazorPages();
    services.AddServerSideBlazor();
    services.AddTelerikBlazor();
}
Run Code Online (Sandbox Code Playgroud)

然后是配置中的相应部分:

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

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
    endpoints.MapBlazorHub();
    endpoints.MapFallbackToPage("/_Host");
});
Run Code Online (Sandbox Code Playgroud)

authentication azure azure-active-directory blazor blazor-server-side

7
推荐指数
1
解决办法
3711
查看次数

为什么我的 blazor.server.js 之后无法加载任何 js?

所以我注意到在我的 _Host.cshtml 文件中,我在</body>标签之前有这个脚本

 <script src="_framework/blazor.server.js"></script>
Run Code Online (Sandbox Code Playgroud)

我还有一些应该在之后加载的脚本,它们是

    <script src="assets/plugins/jquery/jquery.min.js"></script>
    <script src="assets/plugins/jquery-ui/jquery-ui.js"></script>
    <script src="assets/plugins/popper/popper.js"></script>
    <script src="assets/plugins/feather/feather.min.js"></script>

    <script src="assets/plugins/bootstrap/js/bootstrap.min.js"></script>
    <script src="assets/plugins/typeahead/typeahead.js"></script>
    <script src="assets/plugins/typeahead/typeahead-active.js"></script>
    <script src="assets/plugins/pace/pace.min.js"></script>
    <script src="assets/plugins/slimscroll/jquery.slimscroll.min.js"></script>
    <script src="assets/plugins/highlight/highlight.min.js"></script>

    <!-- Articles Script -->
    <script src="assets/plugins/dataTable/datatables.min.js"></script>
        <script src="assets/plugins/summernote/summernote.min.js"></script>
        <script src="assets/plugins/bootstrap-tagsinput/bootstrap-tagsinput.js"></script>
    <!-- Required Script -->
    <script src="assets/js/app.js"></script>
    <script src="assets/js/avesta.js"></script>
    <script src="assets/js/avesta-customizer.js"></script>

</body>
Run Code Online (Sandbox Code Playgroud)

但是,如果我的顶部有 blazor.js 脚本,我的菜单将无法正常工作,它将停止工作并如下所示。实际上,我点击了很多次,但它并没有像你所看到的那样有动画效果。

在此输入图像描述

但是,如果我将 blazor.server.js 脚本放在底部最后加载,它就可以正常工作,看起来像这样

在此输入图像描述

但是如果我最后加载它,我会在控制台中看到它

在此输入图像描述

这导致我无法做到这一点

<input @bind="@CurrentValue" @oninput="@((e) => { CurrentValue=(string)e.Value;})" @onkeypress="KeyPress" class="form-control" type="text" placeholder="Search" aria-label="Search">
Run Code Online (Sandbox Code Playgroud)

它只是根本没有击中该函数,什么也没有发生,它没有注册它。

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

7
推荐指数
1
解决办法
6790
查看次数

在 blazor 中绑定动态值的最佳方法是什么

我使用 Dictionary<string,string> 来存储一些选项,键是选项的名称,正如您猜测的那样,该值是相应选项的值。

在我的剃刀文件中,我有这段代码:

@foreach (KeyValuePair<string, string> option in templates.templatesList[SelectionValue])
{
    <tr>
        <td>@option.Key</td>
        <td><input type="text"/></td>
    </tr>
}
Run Code Online (Sandbox Code Playgroud)

我要做的是将文本输入的值存储到字典中的正确值中,遗憾的是我们不能使用@bind = @option.Value。

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

7
推荐指数
1
解决办法
4158
查看次数

如何使用 Blazor 服务器端判断用户何时离开网站

Blazor 服务器端是基于 signalr 构建的,因此我假设它知道用户何时离开网站(关闭连接)。是否有任何引发的事件可供我用来记录此事件?或者任何其他方式真的!

blazor blazor-server-side

7
推荐指数
1
解决办法
2834
查看次数

如何将值从页面传递到 Blazor 中的布局?

我有一个布局 ( MainLayout.razor),它有一个名为ShowFooter. 在某些页面上,我希望能够将该标志设置为true,而将其他一些设置为false

我还没有找到任何关于页面(即带有路由的组件)如何与其布局进行通信的明确说明。这可以/应该如何在 Blazor 中完成?

注意:您可能建议使用 2 种布局,一种有页脚,一种没有页脚,但这并不能真正解决我的问题,我希望能够在同一页面的不同时间显示和隐藏页脚。另外,这只是需要在布局和页面之间进行通信的一种情况。还有无数其他的。

blazor blazor-server-side blazor-webassembly

7
推荐指数
2
解决办法
2301
查看次数