You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XAF Blazor成功保存记录后弹出提示消息代码不生效如何解决

问题原因及修复方案

你当前代码有三个核心问题导致无法生效:

  1. 控制器没有配置全局生效规则,默认只会匹配特定类型视图
  2. 选择了错误的ObjectSpace事件:Committing是事务提交前触发,此时事务未完成,且Blazor UI上下文此时无法正确渲染通知
  3. 多余的IsCommitting判断逻辑会干扰通知触发

修复步骤

1. 配置控制器全局生效

在控制器构造函数中添加全局匹配规则,让所有视图都会激活该控制器:

public MessageSavedSuccessfullyViewController()
{
    InitializeComponent();
    // 匹配所有类型的视图(列表/详情等)
    TargetViewType = ViewType.Any;
    // 不限制绑定的业务对象类型
    TargetObjectType = null;
    // 同时激活根视图和嵌套视图
    TargetViewNesting = Nesting.Any;
}

2. 替换为正确的提交后事件

把订阅的Committing事件换成Committed事件,该事件会在事务提交成功完成后触发,保证只有保存成功才弹提示。

3. 清理冗余逻辑

移除不必要的IsCommitting判断,Committed事件触发时默认已经完成提交操作,额外增加判断反而可能阻止通知触发。


完整可用代码

public partial class MessageSavedSuccessfullyViewController : ViewController
{
    public MessageSavedSuccessfullyViewController()
    {
        InitializeComponent();
        // 全局生效配置
        TargetViewType = ViewType.Any;
        TargetObjectType = null;
        TargetViewNesting = Nesting.Any;
    }
    protected override void OnActivated()
    {
        base.OnActivated();
        // 替换为提交成功后触发的Committed事件
        View.ObjectSpace.Committed += ObjectSpace_Committed;
    }
    protected override void OnDeactivated()
    {
        View.ObjectSpace.Committed -= ObjectSpace_Committed;
        base.OnDeactivated();
    }
    private void ObjectSpace_Committed(object sender, EventArgs e)
    {
        // 仅当有修改被提交时才弹提示,避免无修改点保存也弹通知
        if (View.ObjectSpace.GetObjectsToSave().Count > 0)
        {
            MessageOptions options = new MessageOptions();
            options.Duration = 2000;
            options.Message = "记录保存成功";
            options.Type = InformationType.Success;
            options.Web.Position = InformationPosition.Right;
            options.Win.Caption = "操作成功";
            options.Win.Type = WinMessageType.Toast;
            Application.ShowViewStrategy.ShowMessage(options);
        }
    }
}

额外检查项

如果修改后仍不生效,确认以下配置:

  • 该控制器所在的模块已经被添加到你Blazor应用的模块依赖列表中
  • Blazor项目未禁用Toast通知功能,默认配置下该功能是开启状态

内容的提问来源于stack exchange,提问作者M.Bouabdallah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:12:04