我在尝试使用asp确认框时遇到了一些困难。我现在的问题是,在我的确认javascript方法中我将隐藏字段的值更新为1或0,并且在ASP函数中,我正在检查值是否为1或0.目前隐藏字段值为“ ”
前端代码:
ansible-playbook ./main.yaml
Javascript代码:
<asp:HiddenField ID="txtconfirmmessageValue" runat="server" />
/* redacted code*/
<asp:LinkButton ID="EndSessionLinkButton" CssClass="SessionDashboardButton" runat="server" OnClientClick="return confirmAll();" OnClick="EndSession" Text="CANCEL" ></asp:LinkButton>
代码ASP.NET背后
function confirmAll() {
if (confirm("You are about to end session. Are you sure you want to do this.")) {
$('#<%=txtconfirmmessageValue.ClientID %>').val(1);
return true;
}
else {
$('#<%=txtconfirmmessageValue.ClientID %>').val(0);
return false;
}
}
txtconfirmmessageValue的值始终为“”并且永远不会设置,即使我向javascript方法添加了警报,该方法在事件触发后警告了asp:hiddenfield的值。
注意::我也在那里添加了while循环,在确认框事件完成之前传递了asp发生的帖子。我不知道如何推迟回发直到确认框完成。任何帮助将不胜感激。
答案 0 :(得分:1)
由于您是从javascript设置隐藏字段值,因此您可以在代码隐藏中通过Request.Form[]
获取它。
Request.Form[txtconfirmmessageValue.UniqueId]
代码隐藏:
protected void EndSession(object sender, EventArgs e)
{
string value = Request.Form[txtconfirmmessageValue.UniqueId];
if (!Utility.ToBool(value))
{
return;
}
}
答案 1 :(得分:1)
由于点击按钮(例如 Page_Load
)时其他页面事件会触发,请确保这些事件不会触发并覆盖控件的值。
在jQuery设置值之前,页面正在回发,因此您需要阻止回发发生,直到用户响应确认。
为了在页面上保持相同的行为,确保仍然调用服务器端方法,您将希望使用GetPostBackEventReference代表该按钮进行回发。< / p>
答案 2 :(得分:0)
如果我把参数作为字符串而不是int来运行
function confirmAll() {
if (confirm("You are about to end session. Are you sure you want to do this.")) {
$('#<%=txtconfirmmessageValue.ClientID %>').val("1");
}
else {
$('#<%=txtconfirmmessageValue.ClientID %>').val("0");
}
}
答案 3 :(得分:0)
也许你可以尝试我的方法同伴
实施IPostBackEventHandler
ScriptManager.RegisterStartupScript(this, this.GetType(), "confirm",
"if(confirm('check my tickets!'))" + this.ClientScript.GetPostBackEventReference(this, "true") + "; else " +
this.ClientScript.GetPostBackEventReference(this, "false"), true);
public void RaisePostBackEvent(string eventArgument)
{
string res;
switch (eventArgument)
{
case "true":
res = "check!";
break;
case "false":
res = "uncheck。";
break;
default:
throw new NotSupportedException();
}
ScriptManager.RegisterStartupScript(this, this.GetType(), "alert", "alert('" + res + "');", true);
}
答案 4 :(得分:-1)
使用document.getElementById而不是Jquery选择器。它会工作。
document.getElementById("<%=txtconfirmmessageValue.ClientID %>").value=1;