ASP.net - 按钮 - Javascript确认对话框 - 执行SOME服务器端代码?
问题描述:
我有一个简单的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
我知道如何添加一个确认框到按钮属性,并已完成。我正在寻找关于如何在服务器端读取该框结果的答案......换句话说,我总是希望页面回发发生(从单击按钮),但只有一些事件处理程序代码执行。
希望是有道理的。
感谢
马特
答
创建一个隐藏字段,并设置现场的基础上,确认结果的值。您还没有表现出对您的按钮或窗体的代码/ 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>
答
有几种方法可以做到这一点,但我会用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;
}
这是最接近的解决方案我使用的,最终。 我在窗体中添加了一个隐藏字段,然后为onClick的按钮属性添加了一个javascript字符串,该字符串基于对javascript confirm()对话框的响应设置隐藏字段的值。 谢谢! – MattC1999