我们有一个网络应用(-ish)webform,我们使用了许多自定义UserControl
。我们在每个视图中加载了一堆它们,但我们不希望它们渲染,甚至不需要预呈现,直到我们不必使用它们。然后我们在每个控件中设置Visible = False
,然后只要需要控件,我们就会使用Update Panel
将其设置为True
。然后控件正确显示。
但是在下一个回发中我们有一个非常讨厌的MAC验证错误,我们认为它与ASP没有更新视图状态有关(但我不知道这是否完全正确)。
问题:是否有可能确切地知道MAC验证是否会引发错误?如果我们是正确的,并且用户控件的ViewState
未在已发送的页面中更新,那么为它做什么/解决方法的正确方法是什么?
非常感谢
答案 0 :(得分:0)
我已经学到了很多ASP,所以我会澄清我的失败点:
我们认为这与ASP没有更新视图状态有关(但我不知道这是否完全正确)
当然,它绝对是false
。 ASP会在每个帖子上更新整个ViewState
,因此无法更新它。
当我们打开UserControl(Visible=true
)时出现MAC验证问题,因为我们没有指定执行控制的事件的验证(执行自定义__doPostBack()
)
因此,假设完全不正确,只需使用RegisterForEventValidation()
注册即可消除错误(请参阅here)