在我的所有Page_Load()事件中,我必须做
if(!IsPostBack)
{
//code runs on initial get
//Set properties backed by viewstate
}
else
{
//Code runs on each get and post
//Set properties backed by ordinary fields
}
有没有快速的方法来确定这个反射器的缺点,阅读文档或创建测试页?
采用viewstate实际上并不存在的约定是否更好,因为如果不对可能需要在大量业务应用程序中设置的所有可能的1000个属性进行研究,您不知道它是否存在?
答案 0 :(得分:1)
这似乎更像是一个设计问题 - 何时使用ViewState。由于您有源,您显然知道哪些控件使用ViewState,因此不需要猜测或发现。
IsPostback是确定GET或POST的常用方法。您还可以检查Request.HttpMethod。为了决定何时使用ViewState,页面Postback将在其任务完成之前(即根据用户操作更新一些控件)?如果你将Postbck,并填充所有字段的成本太高,那么使用ViewState。或者使用Ajax调用来避免仅用于更新内容的回发。
请记住,当您进行回发时,您不需要ViewState来读取值。控件在Form集合中传递。