我确定您知道更改 HiddenField 不会自动回发。相反,它会在其中一个服务器控件回发时调用ValueChanged方法。
这是您的测试方式 - 您可以在客户端更改隐藏字段值。然后单击 PostBack 按钮以回发到服务器。如果隐藏字段更改,HF1_ValueChanged 将触发。
ASPX
<asp:HiddenField runat="server" ID="HF1" Value="1"
OnValueChanged="HF1_ValueChanged" />
<div id="button">Click this text to change Hidden Field</div><br/>
<asp:Button runat="server" ID="Button1" OnClick="Button1_Click"
Text="PostBack"/><br/>
<script src="/Scripts/jquery-1.8.2.js"></script>
<script>
$(document).ready(function() {
$("#button").click(function () {
$("#<%= HF1.ClientID %>").val("2");
alert("HF has new value: " + $("#<%= HF1.ClientID %>").val());
});
});
</script>
代码背后
protected void HF1_ValueChanged(object sender, EventArgs e)
{
// This method should be called
// only if hidden field is changed at client side.
}
protected void Button1_Click(object sender, EventArgs e)
{
}