2011-08-23 55 views
4

我有一个简单的ASP.net页面,用户可以编辑他们自己的信息。ASP.net - 按钮 - Javascript确认对话框 - 执行SOME服务器端代码?

单击“编辑”按钮时,表单进入编辑模式,并显示“保存”和“取消”按钮,其行为与预期相同。

我想要做的是这样的:

当点击“保存”,显示一个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 

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

希望是有道理的。

感谢

马特

回答

3

创建一个隐藏字段,并设置现场的基础上,确认结果的值。您还没有表现出对您的按钮或窗体的代码/ 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> 
+0

这是最接近的解决方案我使用的,最终。 我在窗体中添加了一个隐藏字段,然后为onClick的按钮属性添加了一个javascript字符串,该字符串基于对javascript confirm()对话框的响应设置隐藏字段的值。 谢谢! – MattC1999

1

有几种方法可以做到这一点,但我会用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; 
} 
相关问题