由于Response.Redirect()而被忽略的Javascript

时间:2011-06-13 11:13:38

标签: c# javascript asp.net

我目前正在使用C#处理asp.net,我需要显示一个消息框并确认用户的输入并重定向到另一个页面,我的代码是这样的:

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()但页面没有被重定向,我该怎么做才能解决这个问题?

5 个答案:

答案 0 :(得分:6)

您是否绝对需要在服务器端处理此问题?事实上,这很容易让人感到困惑。

例如,如果可以使用Javascript / jQuery处理它,你可以做一些简单的事情:

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

答案 1 :(得分:4)

可以选择在客户端点击事件中添加javascript

例如: -

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

Page_Load

上添加以下代码
Button1.Attributes.Add("onclick", "if(confirm('do you want to redirect?')){}else{return false}");

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

至于你的Button1点击

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

这个想法是 - 只有在用户通过单击确定确认后才会触发您的代码隐藏Button1_Click事件

答案 4 :(得分: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