在JQuery设置它之后找不到.NET隐藏字段值

时间:2015-04-27 15:37:07

标签: javascript c# jquery asp.net

我在尝试使用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发生的帖子。我不知道如何推迟回发直到确认框完成。任何帮助将不胜感激。

5 个答案:

答案 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;