2011-06-13 202 views
1

我目前正在使用C#编写asp.net,我需要显示一个消息框并确认来自用户的输入并重定向到另一个页面,我的代码如下所示:Javascript被忽略,因为Response.Redirect()

protected void Button1_Click(object sender, EventArgs e) 
{ 
    System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
    sb.Append("<script language='javascript'>"); 
    sb.Append("if (confirm('YES OR NO?')){ /*some javascript code*/ }"); 
    sb.Append("</script>"); 

    Page.RegisterStartupScript("FocusScript", sb.ToString()); 
    Response.Redirect("Default.aspx"); 

} 

这里问题是直接重定向到下一个页面而不显示消息框。 如果我删除Response.Redirect("Default.aspx");它显示消息框成功。我想这里可能是被Response.Redirect()具有较高的优先级比javascript

我尝试使用

sb.Append("if (confirm('YES OR NO?')){ window.location.href = \"Default.aspx"; }\"); 

,而不是使用Response.Redirect()但页面并没有得到重定向,我应该怎么做才能解决这个问题呢?

+0

是否Button1的放置的UpdatePanel?如果是这样,请使用ScriptManager.RegisterStartupScript方法代替 – 2011-06-13 11:20:54

+1

Fyi,它是'type =“text/javascript”'而不是'language =“...”' – ThiefMaster 2011-06-13 11:21:17

+0

检查你的反斜杠。我认为它可能是这样的: sb.Append(“if(confirm('YES or NO?')){window.location.href = \”Default.aspx \“;}”); – Grace 2011-06-13 12:07:09

回答

4

有一个在客户端点击事件中使用添加JavaScript的一个选项

例如: -

<asp:button id="Button1" OnClientClick="javascript:return confirm('Are you sure?');" runat="server" onclick="Button1_Click" /> 

然后在代码端简单地重定向页面。

+0

'javascript:'不应该用于事件。它所做的只是定义一个标签。 – Shurdoof 2011-06-13 11:58:05

-1

移动以下块Page_Load

System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
    sb.Append("<script language='javascript'>"); 
    sb.Append("if (confirm('YES OR NO?')){ /*some javascript code*/ }"); 
    sb.Append("</script>"); 

    Page.RegisterStartupScript("FocusScript", sb.ToString()); 

你很晚注册脚本块,这是不可用的按钮,点击之前客户端,你在上buttonclick服务器端安装它,这是太这类事件迟到了。

您可以使用如下代码。

<asp:button id="Button1" 
     usesubmitbehavior="true" 
     text="Open Web site" 
     onclientclick="DoSomething()" 
     runat="server" onclick="Button1_Click" /> 
+0

但是,每次访问该页面时都会显示确认弹出窗口,而不是仅在单击该按钮之后。 – DavidGouge 2011-06-13 11:19:14

+0

但我不想在Page_Load中显示消息框,我希望在按钮单击事件时使用MessageBox,并根据用户输入重定向到其他页面。 – 2011-06-13 11:22:24

+0

我更新了附加客户端事件的代码。 – PSK 2011-06-13 11:25:02

1

Confirm是一个JavaScript函数,它在客户端执行。注册后,您立即重定向到另一个页面,因此该功能从不执行。

6

你绝对需要在服务器端处理这个问题吗?事实上,这是一件相当简单的事情变得混乱的地方。

如果你可以,例如,使用Javascript/jQuery的处理它,你可以不喜欢简单的东西:

$('#Button1').click(function(){ 
    if (confirm("Yes or No?")){ 
     window.location = "/default.aspx"; 
    } 
}); 
+0

绝对如此。仅仅因为您使用ASP .NET,不需要使用'RegisterStartupScript'。描述的行为纯粹是*客户端*。 – 2011-06-13 11:28:53

0

我认为最好在页面加载时向按钮添加一个属性,并让button_click函数仅仅重定向。像这样的(页面加载)的东西:

button.attribute.add("onclick","Javascript:confirmFunction();") 

在点击按钮只有这个:

protected void Button1_Click(object sender, EventArgs e) 
{  
    Response.Redirect("Default.aspx");  
} 

终于在JS有这样的:

<script> 
function confirmFunction() 
{ 
    if(Confirm("Yes OR NO") 
     //Add your JS Code 
     return true; //will pass onto server 
    else 
     //Add your JS Code 
     return false; //will not go to server 
} 
</script> 

HTH

1

添加以下代码on Page_Load

Button1.Attributes.Add("onclick", "if(confirm('do you want to redirect?')){}else{return false}"); 

现在你点击按钮会首先触发java确认模态框。

为UR Button1的单击

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Response.Redirect("Default.aspx"); 
} 

的想法是 - 你的代码隐藏Button1_Click事件将触发用户确认后,才通过单击OK