zoukankan      html  css  js  c++  java
  • 禁用ViewState后,WebForm还有意义吗?

    禁用ViewState后,WebForm还有意义吗?

    WebForm 是基于事件的开发模式,禁用ViewState 后,破坏了控件事件的完整性,那我们还会在Web.config里面禁用掉ViewState吗?这么做什么意义,会不会破坏我们WebForm的开发模式。

      

    下面是禁用掉ViewState 后,控件事件对应的情况。

    Repeater

    操作:ItemCommand(失效)

    数据:DataBinding(可用)

    行为:ItemCreated(可用) , ItemDataBound(可用)

    Button

    操作:Click (可用), Command(待验证)

    数据:DataBinding(可用)

    DropDownList

    操作:SelectedIndexChanged(可用),TextChanged(待验证)

    数据:DataBinding(可用),DataBound(可用)

    下面列举三类Asp.net 中最常用的三类应用

      

    视图型

    <asp:FormView ID="FormView1" runat="server">

    <ItemTemplate>...</ItemTemplate>

    </asp:FormView>

    FormView1.DataSource = SomeDataSource;
    FormView1.DataBind();

      

    列表型

    <asp:Repeater ID="Repeater1" runat="server" OnItemCommand="Repeater1_ItemCommand">

    <ItemTemplate>

    <asp:LinkButton ID="LinkButton1" runat="server" CommandName="delete" CommandArgument='<%# Eval("ID") %>'>删除</asp:LinkButton>

    </ItemTemplate>

    </asp:Repeater>

     
    protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) { ... }

    表单型

    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

    <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />

    protected void Button1_Click(object sender, EventArgs e) { ... }

    这三个例子中,是否启用ViewState对于视图型、表单型应用都没有问题,列表型应用在禁用ViewState后彻底失效,三个操作带来的优势倒是挺明显就是源代码清爽了不少,页面的加载速度也快不少。

    总结:Asp.net引入ViewState本来是一笔很宝贵的财富,但是如果使用不当,会照成整个页面加载速度明显下降,是否禁用ViewState还是看具体的应用场景。

  • 相关阅读:
    hdu 2444(二分图) The Accomodation of Students
    hdu 5532 (LIS) Almost Sorted Array
    hdu 1059 (多重背包) Dividing
    poj 2184(Cow Exhibition)
    hdu 2571 (命运) 那个配图女神
    poj 3624 && hdu 2955(背包入门)
    hdu 1257 && hdu 1789(简单DP或贪心)
    BBS(第一天)项目之 注册功能实现通过forms验证与 前端ajax请求触发查询数据库判断用户是否存在的功能实现
    Django之form模板的使用
    Django之Auth模块 实现登录,退出,自带session 与认证功能的一个重要的模块
  • 原文地址:https://www.cnblogs.com/JavCof/p/webform_viewstate.html
Copyright © 2011-2022 走看看