0

我的理解是,隐藏字段或任何其他只读控件的视图状态控件在客户端的回发之间没有受到干扰。

但是我怎么来检查这实际上是有效的。我如何模拟隐藏字段中更改值的回发以查看实际发生的情况。我已经实现了一个子:

Protected Sub HF1_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs)
       Handles HF1.ValueChanged

我该如何测试呢?我尝试在 Firefox 中检查元素,但我什至找不到隐藏字段。然后我可以在页面源上看到,但我无法编辑它。

4

1 回答 1

1

我确定您知道更改 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)
{

}
于 2013-10-03T16:25:11.460 回答