Blazor 自定义组件 模态框
在Blazor应用程序中,模态框(Modal)
是一个常见的UI元素,用于在用户交互时显示重要信息或需要用户确认的操作。
本文将介绍如何创建一个自定义的Blazor模态框组件,并使用它。
创建Modal组件
首先,我们创建一个名为Modal.razor
的组件文件。这个组件继承了ComponentBase
类,并定义了模态框的HTML结构和C#代码。
@inherits ComponentBase
<div class="modal" style="display: @(IsVisible ? "block" : "none")">
<div class="modal-content">
<h3>@Title</h3>
<p>@Message</p>
<button class="btn btn-primary" @onclick="OnConfirm">确认</button>
<button class="btn btn-danger" @onclick="OnCancel">取消</button>
</div>
</div>
@code {
[Parameter]
public string Title { get; set; }
[Parameter]
public string Message { get; set; }
[Parameter]
public EventCallback OnConfirm { get; set; }
[Parameter]
public EventCallback OnCancel { get; set; }
private bool IsVisible { get; set; }
public void Show()
{
IsVisible = true;
}
public void Hide()
{
IsVisible = false;
}
}
在这个组件中,我们定义了四个参数:
Title
:模态框的标题。
Message
:模态框显示的消息内容。
OnConfirm
:当用户点击“确认”按钮时触发的事件回调。
OnCancel
:当用户点击“取消”按钮时触发的事件回调。
我们还定义了一个私有变量IsVisible
来控制模态框的显示与隐藏,并提供了Show
和Hide
两个公共方法来控制这个变量的值。
创建Modal的CSS样式
接下来,我们创建一个名为Modal.razor.css
的CSS文件,用于定义模态框的样式。
.modal {
position: fixed;
top: 0;
left: 0;
z-index: 1000;
display: none;
width: 100%;
height: 100%;
overflow: auto;
background-color: rgba(0, 0, 0, 0.4);
}
.modal.show {
display: block;
}
.modal-dialog {
margin: 15px;
}
.modal-content {
background-color: #fff;
border: 1px solid #888;
border-radius: 5px;
padding: 20px;
}
.modal-header {
padding: 10px;
border-bottom: 1px solid #eee;
}
.modal-footer {
padding: 10px;
border-top: 1px solid #eee;
text-align: right;
}
.btn-close {
/* 使用合适的样式来显示关闭按钮 */
}
这个CSS文件定义了模态框的整体布局、背景色、边框样式等。通过.show
类来控制模态框的显示。
使用Modal组件
现在,我们在ModalExample.razor
页面中使用刚才创建的Modal组件。
@page "/modal-example"
@rendermode @(new InteractiveServerRenderMode(prerender: true))
@using Microsoft.AspNetCore.Components
<h1>Blazor 模态框示例</h1>
<button class="btn btn-primary" @onclick="ShowModal">打开模态框</button>
<Modal Title="模态框标题" Message="这是一个模态框示例" OnConfirm="ConfirmModal" OnCancel="CancelModal" @ref="modalRef" />
@code {
Modal modalRef;
void ShowModal()
{
modalRef.Show();
}
async Task ConfirmModal()
{
// 处理确认逻辑
await Task.Delay(500);
modalRef.Hide();
}
async Task CancelModal()
{
// 处理取消逻辑
await Task.Delay(500);
modalRef.Hide();
}
}
button按钮:当用户点击时,会触发ShowModal
方法。@onclick
是Blazor中用于绑定事件处理器的指令。
Modal组件:它接收几个参数:
Title
: 模态框的标题。
Message
: 模态框中显示的消息。
OnConfirm
: 当用户点击确认按钮时调用的方法。
OnCancel
: 当用户点击取消按钮时调用的方法。
@ref
: 用于获取Modal组件的引用,以便在@code
块中调用其方法。
@code
块包含了页面的C#代码逻辑。
Modal modalRef
: 定义了一个Modal类型的变量modalRef
,用于在C#代码中引用模态框组件。
void ShowModal()
: 这是一个方法,当按钮被点击时,会调用modalRef的Show方法,显示模态框。
async Task ConfirmModal()
: 当用户点击模态框的确认按钮时,会调用这个方法。它首先等待500毫秒(模拟处理逻辑),然后调用modalRef的Hide方法,隐藏模态框。
async Task CancelModal()
: 与ConfirmModal类似,但用于处理用户点击取消按钮的逻辑。它也等待500毫秒后隐藏模态框。
示例代码
学习技术最好的文档就是【官方文档】,没有之一。
还有学习资料【Microsoft Learn】、【CSharp Learn】、【My Note】。
如果,你认为阅读这篇博客让你有些收获,不妨点击一下右下角的【推荐】按钮。
如果,你希望更容易地发现我的新博客,不妨点击一下【关注】。