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 用于显示警告提示。其他常用方法包括 Info、Danger 和 Success。
除了标准方法外,还可使用 Alerts.Add 方法并传递 AlertType 枚举,其值包括:Default、Primary、Secondary、Success、Danger、Warning、Info、Light、Dark。
可关闭性
所有提示方法都包含一个可选的 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)。请参阅异常处理文档。
抠丁客




