从无法正常工作的代码调用警报

时间:2017-05-02 08:05:11

标签: javascript c# asp.net

我正在通过

显示提醒
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "alert", 
             "alert('" + ex.Message.Replace("'", "") + "');", true);

在服务器端按钮的catch块中单击。但我在按钮点击的第一行调用另一个脚本管理器

ScriptManager.RegisterStartupScript(Page, Page.GetType(), "alert", 
              "$('#ContentPlaceHolder1_ctl00_rwsender').show();
ValidatorEnable(document.getElementById('ContentPlaceHolder1_ctl00_rfvsender'), true);", true);

在这种情况下,它不会显示警告消息,但第一行脚本正在运行。

如果删除第一行脚本代码,则警报正在运行。两个不同的脚本管理器之间的关系是什么以及为什么脚本会影响另一个脚本? 我怎样才能解决这个问题呢?

由于

3 个答案:

答案 0 :(得分:1)

第二个将无法工作,因为您将Js指令直接发送到脚本管理器,(请注意,警报是窗口本机功能,这就是它起作用的原因)

只需在您的客户端(aspx)声明一个函数:

function ShowElement(){
    $('#ContentPlaceHolder1_ctl00_rwsender').show();
    ValidatorEnable(document.getElementById('ContentPlaceHolder1_ctl00_rfvsender'), true);
} 

然后在后端调用最后一次:

ScriptManager.RegisterStartupScript(Page, Page.GetType(), "show",'ShowElement()', true);
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "alert","alert('" + ex.Message.Replace("'", "") + "');", true);

请注意,每个注册脚本的密钥必须是唯一的, 这里第一个被注册为" show"并警告"警告"

Just form信息阻止在js代码中使用生成的cleint ID:

只需使用document.getElementById("<%=NameOfYourControl.ClientID %>"), true); 而不是硬编码值:ContentPlaceHolder1_ctl00_rwsender

答案 1 :(得分:0)

(代表OP 发布)。

问题是RegisterStartupScript的关键参数。两者都很警觉。我把它们换成了Guid,它起作用了。

答案 2 :(得分:-1)

你可以尝试一下吗? Response.Write("<script>alert('Alert!');</script>");

您可以在脚本标记

中添加js代码
Response.Write("<script>$('#ContentPlaceHolder1_ctl00_rwsender').show();</script>");