0

我正在尝试将后面的代码中的字符串传递给 .aspx 文件中的 JavaScript 函数。如果我传递一个短的虚拟字符串,比如“bla”,这会很好。但是,当我将完整的异常消息 + 堆栈跟踪传递给它时,程序会挂起并且不会进入 JavaScript 函数。

以下是我尝试完成此操作的方法:

ScriptManager.RegisterStartupScript(this, typeof(string), "loading log message popup", String.Format("LogMessagePopup('{0}')", logMessage), true);

在我的服务器端是 LogMessagePopup JavaScript 函数,

function LogMessagePopup() {
...

JavaScript 函数的内容无关紧要。

问题可能是 logMessage 很长。它是一个完整的异常和堆栈跟踪,超过 4KB。

如果我传递一条较短的消息,我的代码就可以正常工作。

特殊字符也可能存在问题,但在使用 logMessage.replace 转义 JavaScript 中的特殊字符后,问题仍然存在。

我一直在阅读您可以通过 POST 将更长的字符串传递给服务器端代码,但我不明白如何做到这一点,如果这甚至是我正在寻找的解决方案,因为我不知道如何专门将它传递给我的 JavaScript LogMessagePopup 函数。绳子在途中的某个地方丢失了。

4

1 回答 1

0

看看这个线程 ScriptManager.RegisterStartupScript code not working - 为什么? 看起来您需要使用 GetType 而不是 typeof

protected void Page_PreRender(object sender, EventArgs e)
{
   ScriptManager.RegisterStartupScript(this, GetType(), "YourUniqueScriptKey", 
    "alert('This pops up');", true);
}
于 2015-02-21T00:28:44.247 回答