欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

分析10个ASP.NET控件最有用的属性详解

程序员文章站 2024-03-06 20:24:32
1、clientidmode   渲染asp.net控件时会自动生成一个id,当我们在客户端脚本中引用它们时,却会制造不少麻烦,虽然它是命名容器和id的简单串联,但仍然无法...
1、clientidmode
  渲染asp.net控件时会自动生成一个id,当我们在客户端脚本中引用它们时,却会制造不少麻烦,虽然它是命名容器和id的简单串联,但仍然无法预测生成的id范围。
  asp.net 4.0使用clientidmode属性解决了这个问题,它允许你控制生成这些id的方法,clientidmode有四个可选择的值:autoid,static,predictable和inherit。下面是这四个值的含义解释:
  autoid – 和4.0以前的版本保持一致,自动生成id。
  static – 由你指定id的值,在渲染控件时不会发生变化。
  predictable – 由你指定后缀,然后和容器控件的id属性进行合并。
  inherit – 继承父控件的设置。
  注意,page的默认clientidmode属性的值是autoid,可以通过@ page指令设置页面级的值,你还可以通过修改web配置文件设置应用程序级的值。
复制代码 代码如下:

<system.web>
<pages clientidmode="predictable"></pages>
</system.web>

  2、meta关键字和meta描述
  在asp.net 4.0中page类增加了两个新的属性:meta keywords和meta description,可以在运行时设置这两个属性,通过数据库或其它源驱动,并允许你动态设置标签,描述特定的页面,下面的page标签显示了这两个属性。
复制代码 代码如下:

<%@ page language="c#" autoeventwireup="true" keywords="keyword1, keyword2"
description="my description" %>

  3、数据绑定控件中的行持久性选择
  asp.net数据绑定控件,如grid view,都支持行选择,但它们应该选择每个页面上相同编号的行,但在asp.net 4.0以前的版本中,行持久性选择是不能实现的,因为以前的版本选择后续页面上的行时是基于行索引的,asp.net 4.0提供了一个直观的方法解决了这一问题。
  数据绑定控件现在提供了一个enablepersistedsection属性,它可以帮助我实现行持久性选择,下面的代码显示了使用enablepersistedselection属性的list view控件。
复制代码 代码如下:

<asp:listview id="topranks" runat="server" enablepersistedselection="true" datasourceid="dsranks" datakeynames="rankid">
<itemtemplate>

</itemtemplate>
<selecteditemtemplate>

</selecteditemtemplate>
</asp:listview>

  4、autoeventwireup
  autoeventwireup是很少使用但知名度很高的一个asp.net属性,简单地说,它设置为true时,在未明确委派的情况下,允许你自动调用页面事件,下面的代码片段展示了autoeventwireup属性的用法。
<%@ page language="c#" autoeventwireup="true" codefile="default.aspx.cs" …. %>
  它的默认值是true,autoeventwireup属性的缺点在msdn上有详细描述:“它限制了你命名事件处理程序的灵活性,另一个缺点是对性能的不利影响,对于高流量的网站,性能影响是巨大的”。
  5、page的header属性
  page类现在提供了header属性,可以在运行时绑定它,下面的代码示例显示了如何明确设置title属性。
this.header.title = "my page title";
  当你根据某个规则动态关联一个样式表时,这个属性非常方便,在这种情况下,打印页面是理想的候选。
复制代码 代码如下:

htmllink printlink = new htmllink ();
printlink.attributes.add ("type", "text/css");
printlink.attributes.add ("rel", "stylesheet");
printlink.attributes.add ("href", "css/print.css");
this.header.controls.add (printlink);


  6、associatedcontrolid属性
  你可以在一个web表单中将一个控件关联到另一个服务器控件,这时需要使用服务器控件的associatedcontrolid属性,当你想根据某些行为为关联的控件设置热键时,这个属性就可以派上用场了。
复制代码 代码如下:

<asp:label id="lblusername" associatedcontrolid="txtusername" runat="server" text="user name:" />
<asp:textbox id="txtusername" runat="server" />

  associatedcontrolid属性的默认值是一个空字符串,它表示控件未与任何服务器控件关联,下面的代码显示了一个textbox控件是如何与label服务器控件关联的。  
  7、controlstate属性
  asp.net最重要的状态管理技术是viewstate,它允许你在往返web服务器的路上保留值,但由于可在父级关闭,它并不是保存信息可靠的方法。
  asp.net 2.0为服务器控件引入了私有的viewstate,叫做controlstate,它可用来存储控件的关键信息,asp.net可以处理它的序列化和反序列化。
  注意,使用时必须谨慎,因为它会影响页面的性能。
  8、control.preserveproperty
  针对传统的视图状态用法,rick strahl为我们提供了另一个选择:preservedproperties,它可以保存控件id和属性名称,详细信息请参考“implementing an asp.net preserveproperty control(实现asp.net preserveproperty控件)”。
  9、基于浏览器的属性?
  asp.net 2.0为我们提供了一个方法为属性指定一个浏览器过滤器,正当我为此感到困惑时,我碰巧访问了ryan farley的博客,他说他看到john katsiotis的博客时一样感到困惑。
  实际上,你可以根据不同的浏览器,为属性设置不同的值,请看下面的例子(代码来自ryan farley的博客)。  
复制代码 代码如下:

ie:onclientclick="javascript:alert('hello ie!');" mozilla:text="ff button"
  mozilla:onclientclick="javascript:alert('hello firefox!');"
  text="general button" onclientclick="javascript:alert('hello everyone else!');" />

  有趣,是吧?
  10、previouspagetype指令
  previouspagetype指令是asp.net 2.0跨页面回送机制的一部分,允许你指定来源页面的虚拟路径,以便强类型访问来源页面。正常情况下,发送的数据可通过previouspage属性和findcontrol方法访问,但使用强类型的previouspagetype指令允许你访问公共属性,而不需要调用findcontrol方法。
  例如,假设你有一个页面叫做firstpage.aspx,它有一个公共属性firstproperty,现在在你的第二个页面(secondpage.aspx)中,可以添加下面的代码:
<%@ previouspagetype virtualpath=" firstpage.aspx" %>
 
  然后调用第一个页面的属性 
var firstpageproperty = previouspage.firstproperty;
怎么样,这些属性的用法你都熟悉了吗?