确认消息框

时间:2011-02-08 14:01:23

标签: c# javascript asp.net popup

我必须为函数>

显示yes no popup消息框

这就是我为警告弹出窗口>

所做的
  Page.ClientScript.RegisterStartupScript(this.GetType(), "Alert", "<script>alert('File Updated');</script>");

这就是我想要在后面的代码中做的事情:

if (ID != 0)
{
     Page.ClientScript.RegisterStartupScript(this.GetType(), "Confirm", "<script>confirm('are you sure?');</script>");

    if (yes)
    {
        perform function
    }
    else
    {
        return;
    }

}

确认不起作用,,,有关如何执行此操作的任何建议  感谢

编辑部分:

  1. 导航到页面
  2. 向文本框添加值
  3. 点击“保存”按钮为数据库添加值
  4. 询问用户他是否确定要这样做'你确定吗?',确认弹出
  5. 现在只有当ID为!= 0时才会出现上述确认框,否则就不需要弹出窗口。
  6. 如果他说是,则添加到数据库并显示已在数据库中输入值的警告弹出窗口。
  7. 如果否,则不要添加到Db并返回。
  8. 所以我得到了这样的确认框..但我怎样才能得到所选的

    string scriptString = "<script language='JavaScript'> ";
                scriptString += "confirm ('Are you sure you want to Close this period.')";
                scriptString += "</script>";
                Response.Write(scriptString);
    

6 个答案:

答案 0 :(得分:6)

您是否有点击按钮来触发操作?如果是这样,您应该将客户端事件添加到Web控件中,如下所示:

<asp:ImageButton runat="server" ID="DeleteUrlImageButton" ImageUrl="~/Images/icon_remove.gif"
  OnClick="DeleteUrlImageButton_Clicked"
  OnClientClick="return confirm('Are you sure you want to delete?');" />

如果用户选择“是”,则回发正常。如果他们选择否,则取消偶数并且不发生回发。这个IMO是处理它的方法,因为如果它们选择no,它会阻止任何额外的服务器活动。

答案 1 :(得分:2)

添加链接按钮。

在OnClientClick添加

javascript:return confirm('Are you sure')

如果单击“否”,则不会启动回发。如果他们点击是,它将启动回发。

然后在按钮的代码后面(OnClick)执行服务器端处理: (只有在点击“是”时才会执行)

if (ID != 0)
{
Perform function
}

答案 2 :(得分:1)

您尝试做的似乎是(在简化的情况下):

  1. 让用户导航到Page.aspx
  2. 检查ID的值(假设 它是一个查询字符串参数)
  3. 如果ID的值非零,则提示 用户确认
  4. 如果他们确认做“某事”
  5. 你犯的错误是试图在代码隐藏中完全处理2,3和4。您发出的脚本(通过调用RegisterStartupScript)在整个页面呈现给用户之前不会执行,此时步骤3和4的代码检查{的值{1}}并且已经“跳过”了

    您需要做的是决定如何将客户端站点和服务器端之间的工作分开,因为您尝试执行的操作将无法正常工作。在不知道您的页面如何工作以及ID值来自何处的情况下,我无法给出一个特定的示例,但是,类似于:

    1. 让您的网页检查ID以查看它是否符合您的条件,如果是,则发出javascript,但使用一些附加 javascript检查对提示的响应并导致要重新提交的页面,但在查询字符串上添加了confirm = yes
    2. 让您的页面检查查询字符串参数“已确认”以查看是否为“是”。如果是,那就做这项工作

答案 3 :(得分:1)

你不能这样做。 RegisterStartupScript只是在最终呈现页面时注册要包含的脚本。在呈现(到HTML)之后,html被发送到浏览器。因此,当用户最终看到该弹出窗口时,您的代码早已完成。

编辑:

请参阅Mike C的answer:您需要在提交之前将该确认移至

答案 4 :(得分:1)

这里看到的问题是,在没有回发的情况下,你无法获得确认框的值。 JavaScript在客户端运行,直到发生回发(通过ajax或常规方式),它无法与您的C#文件“对话”。

您需要做的是在JavaScript中添加一个确认框,如果单击是,则会回发到您的Asp.net页面并通过Ajax或(示例)form.submit()运行代码。< / p>

答案 5 :(得分:0)

Page.ClientScript.RegisterStartupScript将在客户端上注册该脚本。据我所知,您正在服务器上执行if语句。你能指出哪些确认不起作用?警报框是否显示但是否应该按下是/否?如果是这样,请在客户端上移动if ... else语句。无论如何,我建议你用这段代码替换RegisterStartupScriptBlock:

ClientScript.RegisterClientScriptBlock
     (this.GetType(), "confirm", "alert('do')", true);