Bootstrap 4 Blazor-在关闭事件后不使用引导警报重新呈现列表值
我使用的是Bootstrap 4 Blazor-在关闭事件后不使用引导警报重新呈现列表值,bootstrap-4,blazor,blazor-server-side,Bootstrap 4,Blazor,Blazor Server Side,我使用的是Blazor服务器端,我想显示多条警报消息。要显示这些警报消息,请单击“获取”按钮。单击按钮,多个错误(为了这篇文章,我硬编码了1)被添加到列表变量(参数)中 在Blazor页面中,我循环浏览这些错误,并为每个错误创建一个引导警报组件。 在本例中,我使用了BlazorStrap库中的Alert组件,但我也用常规引导警报和它的JS库进行了尝试,遗憾的是,结果相同 问题: <button @onclick="GoFetch">Fetch</button
Blazor服务器端
,我想显示多条警报
消息。要显示这些警报消息,请单击“获取”按钮
。单击按钮,多个错误(为了这篇文章,我硬编码了1)被添加到列表变量(参数)中
在Blazor页面中,我循环浏览这些错误,并为每个错误创建一个引导警报组件。
在本例中,我使用了BlazorStrap
库中的Alert组件
,但我也用常规引导警报和它的JS
库进行了尝试,遗憾的是,结果相同
问题:
<button @onclick="GoFetch">Fetch</button>
<p>Current count: @testcount</p>
<br />
<br />
@if (errorMessages != null)
{
@foreach (var error in errorMessages)
{
<BSAlert Color="Color.Danger" IsDismissible="true" OnDismiss="@OnDismiss">
@error
</BSAlert>
}
}
[Parameter]
public List<string> errorMessages { get; set; }
private int testcount = 0;
protected override void OnInitialized()
{
// Omitted code..
}
void GoFetch()
{
testcount++;
errorMessages = new List<string>();
errorMessages.Add("test " + testcount);
StateHasChanged();
}
void OnDismiss()
{
StateHasChanged();
}
我第一次单击Fetch
按钮时,警报显示得很好。但是,当我单击警报的解除按钮
(十字)时,警报
将被删除,但当我再次单击获取
按钮时,警报
不会被重新渲染。不知何故,Blazor
认为状态仍然是一样的。我还尝试添加statehaschange()代码>强制重新渲染
作为测试,我在错误文本中添加了count属性
,每次单击Fetch
按钮,错误文本都会增加,因此错误消息总是不同的。然而,令人遗憾的是,这也产生了同样的结果
前端Blazor代码:
<button @onclick="GoFetch">Fetch</button>
<p>Current count: @testcount</p>
<br />
<br />
@if (errorMessages != null)
{
@foreach (var error in errorMessages)
{
<BSAlert Color="Color.Danger" IsDismissible="true" OnDismiss="@OnDismiss">
@error
</BSAlert>
}
}
[Parameter]
public List<string> errorMessages { get; set; }
private int testcount = 0;
protected override void OnInitialized()
{
// Omitted code..
}
void GoFetch()
{
testcount++;
errorMessages = new List<string>();
errorMessages.Add("test " + testcount);
StateHasChanged();
}
void OnDismiss()
{
StateHasChanged();
}
Fetch
当前计数:@testcount
@if(errorMessages!=null)
{
@foreach(errorMessages中的var错误)
{
@错误
}
}
后端/C#代码:
<button @onclick="GoFetch">Fetch</button>
<p>Current count: @testcount</p>
<br />
<br />
@if (errorMessages != null)
{
@foreach (var error in errorMessages)
{
<BSAlert Color="Color.Danger" IsDismissible="true" OnDismiss="@OnDismiss">
@error
</BSAlert>
}
}
[Parameter]
public List<string> errorMessages { get; set; }
private int testcount = 0;
protected override void OnInitialized()
{
// Omitted code..
}
void GoFetch()
{
testcount++;
errorMessages = new List<string>();
errorMessages.Add("test " + testcount);
StateHasChanged();
}
void OnDismiss()
{
StateHasChanged();
}
[参数]
公共列表错误消息{get;set;}
私有int testcount=0;
受保护的覆盖无效OnInitialized()
{
//省略的代码。。
}
void GoFetch()
{
testcount++;
errorMessages=新列表();
添加(“测试”+testcount);
StateHasChanged();
}
void OnDismiss()
{
StateHasChanged();
}
第一次取回按:
第二次取回按:
警报解除时单击:
第三次取回按:
正如您在图中所看到的,在我再次单击discouse
按钮和Fetch
按钮后,警报
不会被重新渲染。调试Blazor
页面前端的列表
var时,我可以看到错误在那里(计数1)
这似乎与每次在GoFetch
函数上单击dismise
按钮并重新初始化列表
var有关。
有什么线索可以解决这个问题吗