【问题标题】:How to call confirm message from code behind in asp.net?如何从asp.net后面的代码中调用确认消息?
【发布时间】:2014-04-07 11:15:15
【问题描述】:

您好,我想从 asp.net 中的代码调用客户端 javascript 确认消息。

我想使用确认消息中的真或假返回值。

我正在这样做,但这不是正确的方法,请告诉我我该怎么做。

ScriptManager.RegisterStartupScript(this, this.GetType(), "myconfirm", "confirm('No Rule Type Ids found for This Rule.');", true);

【问题讨论】:

  • 我更喜欢使用 typeof(MyPage) 而不是 GetType() 来保存反射(除非您显然在基本页面上)
  • 我认为最好在 html 部分添加确认 onclientclick="return confirm('Are you sure, you want to continue?');

标签: c# javascript asp.net


【解决方案1】:

我认为这是你想要达到的目标:

<script type = "text/javascript">
        function Confirm() {
            var confirm_value = document.createElement("INPUT");
            confirm_value.type = "hidden";
            confirm_value.name = "confirm_value";
            if (confirm("Do you want to save data?")) {
                confirm_value.value = "Yes";
            } else {
                confirm_value.value = "No";
            }
            document.forms[0].appendChild(confirm_value);
        }
    </script>

.aspx 代码

<asp:Button ID="btnConfirm" runat="server" OnClick = "OnConfirm" Text = "Raise Confirm" OnClientClick = "Confirm()"/>

C#

public void OnConfirm(object sender, EventArgs e)
{
    string confirmValue = Request.Form["confirm_value"];
    if (confirmValue == "Yes")
    {
        this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked YES!')", true);
    }
    else
    {
        this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked NO!')", true);
    }
}

【讨论】:

  • 谢谢,这是个好主意,但是如果您不回发页面,它就不起作用,因为 appendChild 命令不会清除以前的值。
  • 谢谢,它可以在我的页面上进行一些修改。使用 asp 的 CustomValidator 时,在 .aspx 代码中,使用 onserverclick="OnConfirm" onClick="Confirm();"。分号作为附加到 onClick 的运行时代码很重要。 onClientClick 没有效果。
【解决方案2】:

而不是直接在后面的代码中写confirm。写下javascript函数的名称。 例如,

ScriptManager.RegisterStartupScript(this, this.GetType(), "myconfirm", "OpenConfirmDialog();", true);

在您的 javascript 中,编写函数 OpenConfirmDialog

<script>
function OpenConfirmDialog()
{
    if (confirm('No Rule Type Ids found for This Rule.'))
    {
       //True .. do something
    }
    else
    {
       //False .. do something
    }
}

</script>

【讨论】:

  • 我想在我的 C# 代码中使用这个 true 或 false 值。
  • 是的。因为,确认框在 javascript 端。您必须向服务器发送一个请求,无论是真还是假。例如。您可以请求带有查询字符串的网页,例如 www.abc.com/default.aspx?result=true 。在服务器端,您可以获得像 Request.QueryString["result"] 这样的值。
【解决方案3】:

您不能将客户端代码与服务器端代码混用。在服务器端代码完成之前,客户端代码(javascript)不会发送到客户端(浏览器)。

您需要停止处理并向用户显示问题(可能通过重定向到其他页面),然后(确认后)继续处理。

【讨论】:

    【解决方案4】:
    Response.Write("<script language=javascript>");
                            Response.Write("if(confirm('El vehiculo no existe, Deseas crear el registro?')){window.location.href='IngresoVehiculos.aspx'}");
                            Response.Write("</script>");
    

    【讨论】:

      【解决方案5】:

      使用:

      Response.Write("<script>alert('Open Message!');</script>");
      

      【讨论】:

      • 我认为这不能回答问题。 “代码隐藏”是指服务器中的 C# 或 VB 代码,而不是客户端中的 javascript。
      【解决方案6】:

      你可以不使用Javascript函数来做到这一点

      试试

      if (MessageBox.Show("confirm('No Rule Type Ids found for This Rule.')",
                  "myconfirm",
                  MessageBoxButtons.YesNo) == DialogResult.Yes)
          {
              // yes
          }
          else
          {
              //No
          }
      

      【讨论】:

      • @HansKesting 你能解释一下为什么这不起作用吗?它适用于我的 webproject (asp.net)
      • 它似乎可以在一切都在本地运行的调试情况下工作。当它在真实服务器上运行时,该弹出窗口将出现在服务器的控制台上,而不是用户的屏幕上。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多