使用 Blazor Asp.Net Core 的 Bootstrap 模态弹出窗口

Muh*_*ran 2 asp.net-core blazor

我正在使用 asp.net core 6.0 开发 blazor,我面临着打开引导弹出模式的问题。当我单击模式按钮时,它不显示任何模式弹出窗口。还要检查检查元素是否没有模态 html 的迹象。我在布局上添加了 bootstrap css。附上参考网址。

链接在这里

这是我的实现

<BlazorTaskItems.Pages.Modal @ref="modal"></BlazorTaskItems.Pages.Modal>
<button class="btn btn-primary" @onclick="() => modal.Open()">Modal!</button>
Run Code Online (Sandbox Code Playgroud)
@code {

private BlazorTaskItems.Pages.Modal modal { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

成分

<div class="modal @modalClass" tabindex="-1" role="dialog" style="display:@modalDisplay; overflow-y: auto;">
    <div class="modal-dialog modal-lg" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">@Title</h5>
                <button type="button" class="close" data-dismiss="modal" aria-label="Close" @onclick="Close">
                    <span aria-hidden="true">&times;</span>
                </button>
            </div>
            <div class="modal-body">
                @Body
            </div>
            <div class="modal-footer">
                @Footer
            </div>
        </div>
    </div>
</div>

@if (showBackdrop)
{
        <div class="modal-backdrop fade show"></div>
}

Run Code Online (Sandbox Code Playgroud)
@code {

    [Parameter]
    public RenderFragment? Title { get; set; }

    [Parameter]
    public RenderFragment? Body { get; set; }

    [Parameter]
    public RenderFragment? Footer { get; set; }

    public Guid Guid = Guid.NewGuid();

    private string modalDisplay = "none;";
    private string modalClass = "";
    private bool showBackdrop = false;

    public void Open()
    {
        modalDisplay = "block;";
        modalClass = "show";
        showBackdrop = true;
    }

    public void Close()
    {
        modalDisplay = "none";
        modalClass = "";
        showBackdrop = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

Jes*_*ood 5

您需要调用StateHasChanged();(这恰好在您的链接代码中......)

public void Open()
{
    modalDisplay = "block;";
    modalClass = "show";
    showBackdrop = true;
    StateHasChanged();
}
Run Code Online (Sandbox Code Playgroud)

确保Close()也在方法中执行此操作。