在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
[源码下载] 精进不休 .NET 4.0 (1) - asp.net 4.0 新特性之web.config的改进, ViewStateMode, ClientIDMode, EnablePersistedSelection, 控件的其它一些改进
作者:webabcd 介绍 asp.net 4.0 的新增功能
示例 1、简洁的 web.config,配置信息被移到了 machine.config Web.config
代码
<?xml version="1.0"?>
<!-- 清爽的 web.config 配置信息一律都放到 machine.config 里了 --> <configuration> <system.web> <compilation debug="true" targetFramework="4.0" /> </system.web> </configuration> 2、ViewStateMode 属性的用法 ViewStateDemo.aspx
代码
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="ViewStateDemo.aspx.cs" Inherits="AspDotNet.ViewStateDemo" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> <!-- ViewStateMode - 控件的视图状态模式 ViewStateMode.Enabled - 此控件启用 ViewState,并且其子控件中所有 ViewStateMode 为 Inherit 的控件也全部启用 ViewState ViewStateMode.Disabled - 此控件禁用 ViewState,并且其子控件中所有 ViewStateMode 为 Inherit 的控件也全部奇偶能用 ViewState ViewStateMode.Inherit - 此控件是否启用 ViewState,由其父控件的 ViewStateMode 的值决定 --> <asp:PlaceHolder ID="PlaceHolder1" runat="server" ViewStateMode="Disabled"> <!--无 ViewState--> <asp:Label ID="Label1" runat="server" ViewStateMode="Disabled" /> <br /> <!--有 ViewState--> <asp:Label ID="Label2" runat="server" ViewStateMode="Enabled" /> <br /> <!--无 ViewState--> <asp:Label ID="Label3" runat="server" ViewStateMode="Inherit" /> </asp:PlaceHolder> <br /> <!--点击“回发”按钮后观察各个 Label 控件是否启用了 ViewState--> <asp:Button ID="Button1" runat="server" Text="回发" /> </asp:Content> ViewStateDemo.aspx.cs
代码
using System;
using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace AspDotNet { public partial class ViewStateDemo : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { // 页面第一次加载时,分别给三个 Label 赋值,用于演示是否启用了 ViewState if (!Page.IsPostBack) { Label1.Text = "Label1"; Label2.Text = "Label2"; Label3.Text = "Label3"; } } } } 3、ClientIDMode 属性的用法 ClientID.aspx
代码
<%@ Page Title="ClientID" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="ClientID.aspx.cs" Inherits="AspDotNet.ClientID" ClientIDMode="Static" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> <!-- ClientIDMode - 生成客户端 ID 的方式 ClientIDMode.AutoID - 生成方式和以前一样,为保证唯一,会把其以上各层级的控件ID拿过来拼成一个页面中的唯一ID ClientIDMode.Inherit - 继承父控件的客户端ID生成方式 ClientIDMode.Static - 静态方式。在服务端设置的ID是什么,客户端所呈现的ID就是什么 ClientIDMode.Predictable - 生成ID的方式为:[Prefix]_[ID]_[Suffix] 注意: 在某控件层级中如果没有设置 ClientIDMode,则其默认值为 AutoID 如果在控件层级中的父级控件设置了 ClientIDMode,则其子控件的默认值为 Inherit --> <!-- ClientIDMode.AutoID 的 Demo --> <fieldset> <legend>Legacy</legend> <asp:TextBox ID="txtLegacy" ClientIDMode="AutoID" runat="server" Text="ID: txtLegacy" /> </fieldset> <!-- ClientIDMode.Static 的 Demo --> <fieldset> <legend>Static</legend> <asp:TextBox ID="txtStatic" ClientIDMode="Static" runat="server" Text="ID: txtStatic" /> </fieldset> <!-- ClientIDMode.Inherit 的 Demo (注意:Page 上的 ClientIDMode 的值为 Static,所以此控件的客户端ID生成方式也是 Static)--> <fieldset> <legend>Inherit</legend> <asp:TextBox ID="txtInherit" ClientIDMode="Inherit" runat="server" Text="ID: txtInherit" /> </fieldset> <!-- Predictable 模式中自动分配 Suffix 的方式 --> <fieldset> <legend>Predictable Repeater </legend> <div id="repeaterContainer"> <asp:Repeater ID="repeater" runat="server" ClientIDMode="Static"> <ItemTemplate> <div> <asp:Label ID="productPrice" ClientIDMode="Predictable" runat="server"> <%# string.Format(System.Globalization.CultureInfo.CurrentUICulture, "{0:c}", Eval("ProductPrice"))%> </asp:Label> </div> </ItemTemplate> </asp:Repeater> </div> <asp:TextBox ID="txtPredictableRepeater" runat="server" TextMode="MultiLine" Rows="10" ClientIDMode="Static" Style="width: 99%;" /> </fieldset> <!-- Predictable 模式中分配指定 Suffix 的方式(ClientIDRowSuffix 指定 Suffix 的数据来源) --> <fieldset> <legend>Predictable ListView </legend> <asp:ListView ID="listView" runat="server" ClientIDMode="Static" ClientIDRowSuffix="ProductId"> <ItemTemplate> <div> <asp:Label ID="productPrice" ClientIDMode="Predictable" runat="server"> <%# string.Format(System.Globalization.CultureInfo.CurrentUICulture, "{0:c}", Eval("ProductPrice"))%> </asp:Label> </div> </ItemTemplate> <LayoutTemplate> <div id="listViewContainer"> <div id="itemPlaceholder" runat="server" /> </div> </LayoutTemplate> </asp:ListView> <asp:TextBox ID="txtPredictableListView" runat="server" TextMode="MultiLine" Rows="10" ClientIDMode="Static" Style="width: 99%;" /> </fieldset> <script type="text/javascript"> window.onload = function () { document.getElementById('<%= txtLegacy.ClientID %>').value += " ClientID: " + '<%= txtLegacy.ClientID %>'; document.getElementById('<%= txtStatic.ClientID %>').value += " ClientID: " + '<%= txtStatic.ClientID %>'; document.getElementById('<%= txtInherit.ClientID %>').value += " ClientID: " + '<%= txtInherit.ClientID %>'; document.getElementById('txtPredictableRepeater').value = document.getElementById('repeaterContainer').innerHTML; document.getElementById('txtPredictableListView').value = document.getElementById('listViewContainer').innerHTML; } </script> </asp:Content> ClientID.aspx.cs
代码
using System;
using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace AspDotNet { public partial class ClientID : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { BindData(); } // 绑定数据到 ListView private void BindData() { Random random = new Random(); List<Product> products = new List<Product>(); for (int i = 0; i < 5; i++) { products.Add(new Product { ProductId = i + 100, ProductName = "名称", ProductPrice = random.NextDouble() }); } listView.DataSource = products; listView.DataBind(); repeater.DataSource = products; repeater.DataBind(); } class Product { public int ProductId { get; set; } public string ProductName { get; set; } public double ProductPrice { get; set; } } } } 4、EnablePersistedSelection 属性的用法 EnablePersistedSelection.aspx
代码
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="EnablePersistedSelection.aspx.cs" Inherits="AspDotNet.EnablePersistedSelection" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> <!-- EnablePersistedSelection - 保存选中项的方式 true - 根据 DataKeyNames 指定的字段做为关键字保存选中项(分页操作不会改变选中项) false - 根据行在当前页的表中的索引做为关键字保存选中项(分页后,选中项会发生改变。比如,在第一页选中了第一行,那么分页到第二页的时候选此页的第一行就会被当成选中项,也就是选中项发生了改变) --> <asp:GridView ID="gridView" runat="server" AllowPaging="True" DataSourceID="ObjectDataSource1" CellPadding="4" ForeColor="#333333" GridLines="None" EnablePersistedSelection="true" DataKeyNames="productId"> <AlternatingRowStyle BackColor="White" 全部评论
专题导读
热门推荐
热门话题
阅读排行榜
|
请发表评论