我想在ASP.Net中使用带有Yes / No选项的JavaScript Message-Box。场景是,当我在按钮的Client_click事件上调用JavaScript函数时,它的工作正常。但是当我从后面的代码(C#)调用它时,它会在完成代码执行后弹出。这是我正在尝试的:
protected void Message_Click(object sender, EventArgs e)
{
if (var == 1)
{
this.Page.ClientScript.RegisterStartupScript(this.GetType(), "open", "Confirm();", true);
}
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('Nothing has been selected')", true);
}
}
即使 var == 1 条件为真,我也无法获得 string confirmValue 的更新值。 但是,如果我在" OnClientClick "上调用它,它可以正常工作。几乎所有的网址都经历过,但还没有运气。
非常感谢任何帮助。
答案 0 :(得分:1)
您的代码不会等待服务器端的确认值。 Page.ClientScript.RegisterStartupScript将只注册客户端脚本,以及完成方法执行的那一刻。它将继续下一行代码。处理已注册的javascript代码不是服务器的责任。因此,如果您想要实现Yes/NO
确认并等到服务器端,请使用AjaxModelPopupExtender
和自定义代码,以便为您提供所需的内容。
Here you can get more info on how to use the ajaxmodel pop up extender
答案 1 :(得分:0)
你不应该像你一样去做。代码编码器是对的。 在客户端做客户端的东西,然后到服务器处理一些数据来处理或决定处理。
在您的情况下,您只需要编写Javascript函数并在需要时触发该函数。如果响应为是,则执行回发或Ajax。如果没有,那就留在页面上。
示例javascipt函数如下 -
<script language="javascript" type="text/javasctipt">
function getConfirmation(){
var r = confirm("Press a button!");
if (r == true) {
return true;
} else {
return false;
}
}
</script>
您可以像 -
一样直接调用此方法return confirm("Confirm Input");
如果您想使用漂亮的自定义UI,那么您可以在Ajax控件工具包中使用Ajax Modelpopupextender。
http://www.codeproject.com/Articles/34996/ASP-NET-AJAX-Control-Toolkit-ModalPopupExtender-Co