如何在Acumatica中使用PXRedirectToUrlException打开两个URL标签页
Acumatica 实现多URL独立新标签页打开
原代码的问题在于,抛出第一个PXRedirectToUrlException后程序会直接终止,第二个异常语句根本不会执行,因此只能打开第一个URL的新标签页。要实现同时打开两个独立标签页,可通过注册客户端JavaScript脚本的方式实现:
修改后的代码示例
int countFirst = 3; int countSecond = 4; StringBuilder openTabsScript = new StringBuilder(); if (countFirst > 0) { // 对URL进行JS转义,避免特殊字符导致脚本错误 string safeFirstUrl = HttpUtility.JavaScriptStringEncode(firstUrl); openTabsScript.Append($"window.open('{safeFirstUrl}', '_blank');"); } if (countSecond > 0) { string safeSecondUrl = HttpUtility.JavaScriptStringEncode(secondUrl); openTabsScript.Append($"window.open('{safeSecondUrl}', '_blank');"); } // 如果有需要打开的标签,注册客户端脚本 if (openTabsScript.Length > 0) { PX.Web.UI.PXClientScriptManager.RegisterClientScriptBlock( this, typeof(YourGraphClassName), // 替换为你的图类名称 "OpenMultipleTabs", openTabsScript.ToString(), true ); }
说明
- 利用
StringBuilder拼接需要执行的JavaScript代码,通过window.open方法分别打开每个URL,_blank参数确保在新标签页打开。 - 使用
HttpUtility.JavaScriptStringEncode对URL进行转义,避免URL中的特殊字符破坏脚本结构,同时防范XSS风险。 - 通过
PXClientScriptManager.RegisterClientScriptBlock将脚本注册到客户端,确保页面加载后执行脚本打开标签页。
内容的提问来源于stack exchange,提问作者Jeremy Valdez
相关产品推荐
相关产品推荐

