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有关。 有什么线索可以解决这个问题吗