gpt4 book ai didi

asp.net - RegisterClientScriptBlock 代码未执行

转载 作者:行者123 更新时间:2023-12-02 20:40:04 28 4
gpt4 key购买 nike

我正在使用以下代码尝试在客户端上显示包含错误列表的对话框:

    if (rollout.ImportErrors.Count > 0)
{
ClientScript.RegisterClientScriptBlock(GetType(), "showErrors", "showErrors();", true);
}

错误计数非零,并且发出以下脚本 block ,但脚本未执行。

<script type="text/javascript">
//<![CDATA[
$("#error-report").dialog("open")//]]>
</script>

如果我直接从 Firebug 控制台窗口调用该函数,该对话框将正确显示,因此我知道该对话框和我的代码正在运行。我究竟做错了什么?

顺便说一句,此代码位于内容页面中,使用内容占位符将代码“注入(inject)”到呈现页面的元素中。

最佳答案

我认为你应该尝试 RegisterStartupScriptBlock 而不是 RegisterClientScriptBlock...

查看说明:

RegisterClientScriptBlock 将脚本插入紧跟在开始标记之后的位置,而 RegisterStartupScript 将脚本添加在紧接结束标记之前的位置。

在 IE 中,HTML DOM 以串行方式创建。因此,您的 header 信息将首先被处理,您的表单对象将被创建,您的 RegisterClientScript 将被解析(如果不在功能 block 中,则执行)您的控件(例如表单中的文本框等)将被创建,然后您的 RegisterStartupScript 将被解析(并且如果不在功能 block 中则执行)。

因此,至少在 IE 中,如果您将代码放在 RegisterStartupScript 中,则基本上可以保证任何表单元素都存在供您的脚本访问。相反,基本上可以保证您的脚本在 RegisterClientScript block 中不会存在任何表单元素,并且代码不在功能 block 中。

关于asp.net - RegisterClientScriptBlock 代码未执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2621651/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com