禁用web.config中所有Label控件的viewstate?

时间:2011-06-02 03:41:46

标签: c# asp.net viewstate

是否可以在web.config中禁用特定类型控件的viewstate?

我知道我可以使用<pages enableViewState="false">禁用所有页面的viewstate,但是如果我只想定位所有Label控件呢?

1 个答案:

答案 0 :(得分:4)

其中一种方法,可能是在页面中递归迭代所有控件并禁用标签控件的视图状态 - 显而易见的问题是你需要在页面循环的早期执行此操作然后在这种情况下,你可以错过动态添加的控件。

更优雅的解决方案是创建一个继承自标签控件的自定义控件并禁用视图状态(例如在构造函数中) - 例如

public class MyLabel : System.Web.UI.WebControls
{
  Public MyLabel() 
  {  
    EnableViewState = false;
  }
}

(请注意,在强大的实现中,您应确保在保存视图状态之前将其禁用。)

现在,您可以使用ASP.NET tag mapping feature将所有标签控件从web.config映射到标签控件。