如何测试隐藏字段服务器控件ValueChanged方法

时间:2013-10-03 16:07:43

标签: asp.net viewstate

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

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

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

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

1 个答案:

答案 0 :(得分: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)
{

}
相关问题