我的代码应该是这样的,但它得到了空引用异常
<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)
绑定值类如下(SecilenAtikGrubu和TumAtikTipleri)
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) 我做了以下(它应该工作但它没有),没有重定向,没有错误,没有任何东西,它只是显示没有身份验证的页面,我做错了什么?
步骤 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) 我有一个服务器托管的 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) 我有一个单例类 Globals,我喜欢有一个静态方法来导航到我的应用程序中的其他页面。
public class Globals
{
public static async void openBlazorPage( string pageName )
{
await Task.Run( () => { NavigationManager.NavigateTo( pageName ); } );
}
}
Run Code Online (Sandbox Code Playgroud)
但我无法访问此类中的 NavigationManager。
我在 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 行),然后按钮无法正确呈现并引发未处理的异常:
我试过了:
@onclick="() => ShowEditPersonDialog(personId)" - 上面显示的异常@onclick="(e) => …我正在遵循有关如何设置 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) 我有一个服务器端 blazor 应用程序,我想使用 azure 应用程序洞察来监控它。目前,我只看到在启动应用程序和关闭应用程序时发送的请求,中间没有任何内容......我找不到微软提供的任何支持 Blazor 的文档。
是否可以让 Azure Application Insights 与服务器端 Blazor 完全配合使用?如果是这样,有没有人知道有关此的任何指南?
使用新的 .NET 5 预览版 CSS 隔离来了 blazor。有人知道,是否可以在 blazor 服务器中使用 CSS 隔离?
我玩了很多,但在我的 blazor 服务器应用程序中,CSS 隔离不起作用。还是此功能仅在 blazor WebAssembly 中可用?
所以我试了一下:
TargetFramework 是“net5.0”。安装的 dotnet 版本是“5.0.100-rc.2.20479.15”。
问候丹尼尔
我一直在尝试使用 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 服务器应用程序中
我对 InvokeAsync 的正确用法和更新 UI 感到困惑。该文档有多种用法,但没有真正解释等待或不等待的原因。我也看到了一些相互矛盾的线索,但没有多少支持他们的推理。
使所有方法异步以等待 InvokeAsync(StateHasChanged) 似乎是错误的,我在某处读到引入 InvokeAsync 的原因是为了防止在任何地方都需要异步代码。但是在什么情况下我可能想要等待它?
等待:
非等待丢弃:
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) blazor ×9
c# ×3
.net-5 ×1
.net-core ×1
asp.net ×1
asp.net-core ×1
async-await ×1
asynchronous ×1
invoke ×1
matblazor ×1
mudblazor ×1
razor ×1
razor-pages ×1