【问题标题】:ASP.net - Button - Javascript Confirm dialog - execute SOME server-side code?ASP.net - 按钮 - Javascript 确认对话框 - 执行一些服务器端代码?
【发布时间】:2011-08-23 03:22:38
【问题描述】:

我有一个简单的 ASP.net 页面,用户可以在其中编辑有关自己的信息。

当点击“编辑”按钮时,表单进入编辑模式,我显示“保存”和“取消”按钮,它们的行为与预期一样。

我想做的是这样的:

单击“保存”时,会显示一个 Javascript 确认对话框,询问用户是否要向其他用户发送电子邮件以通知他们刚刚进行的更新。

如果用户说 OK,则执行所有服务器端代码以保存数据,并发送电子邮件。 如果用户说取消,则执行所有服务器端代码以保存数据,而不发送电子邮件。

所以,我需要 javascript 框设置一个标志,然后以某种方式在服务器端读取该标志...然后我可以执行以下操作:

Sub btnSave_Click(sender, e) Handles btnSave.Click

    'Save all the data

    If sendEmail Then  'This flag set by reading result of javascript Confirm
        'Send the email
    End If

End Sub

我知道如何在按钮属性中添加一个确认框,并且已经这样做了。我正在寻找关于如何在服务器端读取该框的结果的答案......换句话说,我总是希望页面回发发生(通过单击按钮),但只有一些事件处理程序代码执行。

希望这是有道理的。

谢谢

马特

【问题讨论】:

    标签: javascript asp.net confirm


    【解决方案1】:

    创建一个隐藏字段,并根据确认结果设置该字段的值。您尚未显示按钮或表单的代码/HTML,但您可以在其中添加类似的内容吗:

    <input type="hidden" id="sendEmail" name="sendEmail" value="" />
    
    <input type="submit" value="Save" onclick="promptForEmail();" />
    
    <script>
       function promptForEmail() {
          var result = Confirm("Send everybody an email?");
          // set a flag to be submitted - could be "Y"/"N" or "true"/"false"
          // or whatever suits
          document.getElementById("sendEmail").value = result ? "Y" : "N";
       }
    </script>
    

    【讨论】:

    • 这是最接近我正在使用的解决方案,最终。我在表单中添加了一个隐藏字段,然后在 onClick 的按钮属性中添加了一个 javascript 字符串,它根据对 javascript confirm() 对话框的响应设置隐藏字段的值。谢谢!
    【解决方案2】:

    有几种方法可以做到这一点,但我将使用 asp:HiddenField。在javascript中,用户确认后,将其结果设置在隐藏字段中。在服务器端,您可以像访问任何其他 asp.net 控件一样访问它。

    所以

    你的aspx:

       <asp:HiddenField ID="HiddenField1" runat="server" Value="" />
    

    代码隐藏:

      protected void Page_Load(object sender, EventArgs e)
    
      {
    
          if (!Page.IsPostBack)
          {
    
            var result = HiddenField1.Value; 
          } 
      }
    

    Javascript:

     //after confirm call this
     function SetValue(val)
     {
       document.getElementById('HiddenField1').value=val;
     }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 2011-05-02
      • 2021-03-03
      相关资源
      最近更新 更多