【问题标题】:confirm message box确认消息框
【发布时间】:2011-02-08 14:01:23
【问题描述】:

我必须为函数显示一个是否弹出消息框>

这就是我为弹出警报所做的>

  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 并返回。

所以我得到这样的确认框.. 但是我怎样才能得到选择的内容

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

【问题讨论】:

  • 你在确认什么?在我看来,您正在尝试确认是否有人甚至想查看该页面。
  • 我刚刚给出了一个例子......这不是真正的代码......我只需要知道如何使用 RegisterStartupScript 显示一个弹出消息,是的......谢谢
  • @user175084 - 你有一个正确的确认消息,虽然在启动脚本中不正确。如果不向我们展示您实际拥有但不起作用的东西,我不确定您如何期望帮助。
  • 我已经在上面解释了我的问题......请看看......谢谢

标签: c# javascript asp.net popup


【解决方案1】:

是否有您单击的按钮来触发操作?如果是这样,您应该像这样将客户端事件添加到您的 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,这是处理它的方法,因为如果他们选择否,它会阻止任何额外的服务器活动。

【讨论】:

    【解决方案2】:

    添加一个链接按钮。

    在 OnClientClick 中添加

    javascript:return confirm('Are you sure')
    

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

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

    if (ID != 0)
    {
    Perform function
    }
    

    【讨论】:

    • 我的印象是您的代码中的“javascript:”部分是不必要的,实际上不是首选。当然,我没有什么可以支持的,但我似乎记得 SO 上有人告诉我。
    • 客户端“onclick”只处理javascript(这不起作用:onclick="http://someserver.com"),所以不需要javascript前缀。
    【解决方案3】:

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

    您需要做的是在 JavaScript 中添加一个确认框,如果单击“是”,它将返回到您的 Asp.net 页面并通过 Ajax 或(示例)form.submit() 运行代码。

    【讨论】:

      【解决方案4】:

      看来您正在尝试做的是(在简化的场景中):

      1. 让用户导航到 Page.aspx
      2. 检查ID 的值(假设 这是一个查询字符串参数)
      3. 如果ID的值非零,提示 用户确认
      4. 如果他们确认做“某事”

      您所犯的错误是试图在代码隐藏中同时处理 2、3 和 4。您发出的脚本(通过调用RegisterStartupScript)在整个页面被呈现给用户之前不会被执行,此时步骤3和4的代码检查ID的值并且做的事情已经被“跳过”了

      您需要做的是决定如何将客户端和服务器端之间的工作分开,因为您尝试做的事情是行不通的。在不知道您的页面如何工作以及 ID 值来自何处的情况下,我无法给出具体示例,但是,例如:

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

      【讨论】:

      • 是的,你是对的。我认为它正在跳过该语句,因为我最后有一个警报语句,它被执行但不是上面的 1.
      • @user175084,基本上对确认框做出反应的代码也必须是javascript,它不能在代码隐藏中=)
      • 那么我怎样才能弹出确认某些内容..任何方法都可以..谢谢
      • @user175084,我在回答中添加了更多信息,您可能还想看看 Mike C 的回答 :=)
      • 我浏览了 Mike C 的代码。在该代码中,它不会检查 id != 0 是否会在单击按钮时简单地显示一个弹出窗口。所以基本上是先执行 HTML,然后再执行代码。
      【解决方案5】:

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

      编辑:

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

      【讨论】:

      • 是的,我认为你是对的。有没有其他方法可以做到这一点。我在上面进一步解释了我的问题。谢谢
      • 如何将其移近提交。我在哪里检查 id != 0 .. 请帮助
      【解决方案6】:

      Page.ClientScript.RegisterStartupScript 将在客户端上注册该脚本。据我所见,您正在服务器上执行 if 语句。您能否具体说明一下确认不起作用是什么意思?是否显示警报框,但按下是/否时没有效果?如果是这样,请在客户端上移动 if ... else 语句。无论如何,我建议您将 RegisterStartupScriptBlock 替换为以下代码:

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

      【讨论】:

        猜你喜欢
        • 2012-01-13
        • 1970-01-01
        • 2013-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-28
        相关资源
        最近更新 更多