注册ViewState为" visible = false" UserControl - ASP.NET

时间:2014-12-15 11:55:10

标签: asp.net user-controls updatepanel viewstate

我们有一个网络应用(-ish)webform,我们使用了许多自定义UserControl。我们在每个视图中加载了一堆它们,但我们不希望它们渲染,甚至不需要预呈现,直到我们不必使用它们。然后我们在每个控件中设置Visible = False,然后只要需要控件,我们就会使用Update Panel将其设置为True。然后控件正确显示。

但是在下一个回发中我们有一个非常讨厌的MAC验证错误,我们认为它与ASP没有更新视图状态有关(但我不知道这是否完全正确)。

问题:是否有可能确切地知道MAC验证是否会引发错误?如果我们是正确的,并且用户控件的ViewState未在已发送的页面中更新,那么为它做什么/解决方法的正确方法是什么?

非常感谢

1 个答案:

答案 0 :(得分:0)

我已经学到了很多ASP,所以我会澄清我的失败点:

  

我们认为这与ASP没有更新视图状态有关(但我不知道这是否完全正确)

当然,它绝对是false。 ASP会在每个帖子上更新整个ViewState,因此无法更新它。

当我们打开UserControl(Visible=true)时出现MAC验证问题,因为我们没有指定执行控制的事件的验证(执行自定义__doPostBack()

因此,假设完全不正确,只需使用RegisterForEventValidation()注册即可消除错误(请参阅here