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

如何通过拦截Acumatica的PXRedirectException实现SO/PO统一重定向至自定义页面

统一拦截Acumatica SO/PO页面重定向的可行方案

方案1:全局拦截PXRedirectException实现重定向替换

Acumatica中绝大多数页面重定向是通过抛出PXRedirectException完成的,你可以在全局请求处理环节拦截该异常,检查目标页面是否为原生SO/PO页面,直接替换为自定义页面即可,无需逐个修改原有重定向代码。

实现步骤:

  • 在Global.asax.cs中注册全局请求预处理事件,拦截并修改重定向异常:
protected void Application_Start(object sender, EventArgs e)
{
    PXApplication.PreHandleRequest += PXApplication_PreHandleRequest;
}

private void PXApplication_PreHandleRequest(object sender, EventArgs e)
{
    var context = HttpContext.Current;
    if (context == null) return;

    var redirectException = context.Items["PXRedirectException"] as PXRedirectException;
    if (redirectException == null) return;

    // 替换原生SO订单页面为自定义页面
    if (redirectException.TargetPage == typeof(SOOrderEntry))
    {
        context.Items["PXRedirectException"] = new PXRedirectException(typeof(CustomSOOrderEntry), redirectException.Parameters);
    }
    // 替换原生PO订单页面为自定义页面
    else if (redirectException.TargetPage == typeof(POOrderEntry))
    {
        context.Items["PXRedirectException"] = new PXRedirectException(typeof(CustomPOOrderEntry), redirectException.Parameters);
    }
}

该方案能覆盖系统内所有通过PXRedirectException触发的重定向场景,包括列表页跳转、关联记录跳转、操作按钮跳转等。

方案2:重写BasePage的Redirect方法(覆盖范围更广但工作量略大)

如果存在部分重定向是直接调用页面Redirect方法而非抛出异常的场景,可以自定义基类页面并替换重定向逻辑:

  1. 创建自定义基类页面,重写Redirect方法:
public class CustomBasePage : PX.Web.UI.PXBasePage
{
    public override void Redirect(Type pageType, object[] parameters)
    {
        if (pageType == typeof(SOOrderEntry))
        {
            base.Redirect(typeof(CustomSOOrderEntry), parameters);
        }
        else if (pageType == typeof(POOrderEntry))
        {
            base.Redirect(typeof(CustomPOOrderEntry), parameters);
        }
        else
        {
            base.Redirect(pageType, parameters);
        }
    }
}
  1. 将现有页面的继承关系从PX.Web.UI.PXBasePage改为自定义基类(需修改所有相关页面的Inherits属性)。

注意事项

  • 测试时需覆盖所有重定向场景,确保原生SO/PO页面的跳转全部被替换。
  • 自定义页面需兼容原页面的重定向参数(如订单ID等),保证业务逻辑正常流转。

内容的提问来源于stack exchange,提问作者user2803805

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:19:54