0
<%--Confirmation Box--%>
<script type="text/javascript" language="javascript">
    function alertbox() {

      if (confirm("Are you sure?") == true) 
          {
              document.getElementById('<%= hdnYesNo.ClientID %>').value = "YES";
          }
          else 
          {
              document.getElementById('<%= hdnYesNo.ClientID %>').value = "NO";
          }

        }
    </script>

如何在 C# 中将此代码重写为代码隐藏?我想要一个带有是或否按钮的确认框。

4

5 回答 5

11
protected void Page_Load(object sender, System.EventArgs e)
{    
    string csName = "PopupScript";
    Type csType = this.GetType();
    ClientScriptManager csm = Page.ClientScript;

    if (!csm.IsStartupScriptRegistered(csType, csName)) {
        StringBuilder sb = new StringBuilder();
        sb.Append("<script>");
        sb.Append("function alertbox() {");
        sb.Append("if (confirm('Are you sure?') == true) ");
        sb.Append("{");
            sb.Append("document.getElementById('" + hdnYesNo.ClientID + "').value = 'YES';");
        sb.Append("}");
        sb.Append("else");
        sb.Append("{");
        sb.Append("document.getElementById('" + hdnYesNo.ClientID + "').value = 'NO';");
        sb.Append("}");
        sb.Append("</script>");


        csm.RegisterStartupScript(csType, csName, sb.ToString());
    }
}
于 2013-10-10T06:30:45.147 回答
2

你可以这样使用

Page.ClientScript.RegisterStartupScript(this.GetType(), "Confi", "if(confirm('Are you sure?') == true){  document.getElementById('txtValue').value ='YES';}else{document.getElementById('txtValue').value ='NO';}", true);
于 2013-10-10T06:33:24.753 回答
1

为此,您需要 javascript,这在后面的代码中是不可能的。代码隐藏在页面发送给用户之前在服务器上运行,javascript 在用户的计算机上运行。

如果您想在后面的代码中访问他们的答案(可能且直接),您可以使用 ajax 或者您可以回发。

如果您希望在按下 .Net asp:button 控件时出现此弹出窗口,则可以在控件的“OnClientClick”属性中放置一个 javascript 函数。

编辑:如果您需要上述任何方面的帮助,请告诉我们,我们将提供帮助:)。

EDIT2:由于下面的讨论,我想我应该澄清一下:您可以(显然)在将javascript传递给客户端之前在服务器端构造javascript,但是您给出的示例不是您应该这样做的情况(示例这可能是一个好主意的地方是一个脚本,该脚本具有从数据库读取的变量或类似的东西,不需要在页面加载之间是动态的)。

于 2013-10-10T06:30:03.827 回答
1

您可以使用ClientScriptManager类及其方法,例如RegisterClientScriptBlock. 取决于您希望何时执行 javascript。

在此处查看详细信息:

http://msdn.microsoft.com/en-us/library/System.Web.UI.ClientScriptManager_methods.aspx

于 2013-10-10T06:30:13.930 回答
0

另一种选择是在 /View 文件夹和用户剃须刀中创建脚本以生成脚本。

然后你可以指向标签中的页面,比如

<script src="~/ScriptGenerator/MyScript" />

用于指向公开动作 MyScript 的控制器 ScriptGeneratorController

于 2014-10-10T15:52:53.620 回答