项目

ASP.NET Core MVC / Razor Pages:页面提示

通常需要向用户显示错误、警告或信息提示。下面展示了一个服务中断提示的示例:

页面提示示例

基础用法

如果直接或间接继承自 AbpPageModel,可以使用 Alerts 属性添加提示信息,这些提示将在请求完成后呈现。

示例:显示警告提示

namespace MyProject.Web.Pages
{
    public class IndexModel : MyProjectPageModel //或继承自 AbpPageModel
    {
        public void OnGet()
        {
            Alerts.Warning(
                text: "我们将在 2023 年 10 月 23 日凌晨 2:00 至 4:00 进行服务中断维护!",
                title: "服务中断"
            );
        }
    }
}

此用法将呈现如上所示的提示。如需对消息进行本地化,可随时使用标准的本地化系统。

异常/无效模型状态

当手动处理异常(使用 try/catch 语句)或需要处理 !ModelState.IsValid 情况并向用户发出警告时,通常会显示提示。例如,如果用户输入错误的用户名或密码,账户模块会显示警告:

页面提示账户布局

请注意,通常无需手动处理异常,因为 ABP 提供了自动异常处理系统。

提示类型

Warning 用于显示警告提示。其他常用方法包括 InfoDangerSuccess

除了标准方法外,还可使用 Alerts.Add 方法并传递 AlertType 枚举,其值包括:DefaultPrimarySecondarySuccessDangerWarningInfoLightDark

可关闭性

所有提示方法都包含一个可选的 dismissible 参数。默认值为 true,使提示框可关闭。设置为 false 可创建固定提示框。

IAlertManager

如果需要从代码的其他部分添加提示消息,可注入 IAlertManager 服务并使用其 Alerts 列表。

示例:注入 IAlertManager

using Volo.Abp.AspNetCore.Mvc.UI.Alerts;
using Volo.Abp.DependencyInjection;

namespace MyProject.Web.Pages
{
    public class MyService : ITransientDependency
    {
        private readonly IAlertManager _alertManager;

        public MyService(IAlertManager alertManager)
        {
            _alertManager = alertManager;
        }

        public void Test()
        {
            _alertManager.Alerts.Add(AlertType.Danger, "测试消息!");
        }
    }
}

注意事项

AJAX 请求

页面提示系统设计用于常规的完整页面请求,不适用于 AJAX/局部请求。提示信息在页面布局中呈现,因此需要完全刷新页面。

对于 AJAX 请求,更适合抛出异常(例如 UserFriendlyException)。请参阅异常处理文档。

在本文档中