仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 782|回复: 7
打印 上一主题 下一主题

[学习教程] ASP.NET编程:ASP.NET2.0服务器控件之创立庞大属性

[复制链接]
柔情似水 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:41:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
是不是实质都是API?有的好像不只是API那么简单的,有的也是一种框架就像MFC一样。有的还是一种思想(就是做软件的思想)(好像很深奥,其实我也不懂^_^)asp.net|创立|服务器|控件  上一篇文章先容了完成3种情势庞大属性的详细办法。为了加深读者关于这些完成办法的了解深度,本文具体解说了一个使用ASP.NET2.0手艺创立庞大属性的示例。

  1.示例使用

  本文所完成的示例很复杂,其中心是经由过程完成自界说服务器控件的连字符情势庞大属性来讲明庞大属性的完成办法,个中利用了上一篇文章中先容的内容。示例最终效果如所示。



  如所示,页面显现了公司地点乡村、姓名、性别和职务信息。这些内容是界说服务器控件出现的了局,个中公司地点乡村由复杂属性City设置,姓名、性别和职务由庞大属性Employee设置,个中包含子属性Name,Sex和Title设置。上面枚举了示例使用程序的Default.aspx文件源代码。

<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%>
<%@RegisterNamespace="WebControlLibrary"Assembly="WebControlLibrary"TagPrefix="Cp"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>完成连字符情势庞大属性</title>
</head>
<body>
<formid="form1"runat="server">
<div>
<Cp:CompanyID="demo1"runat="server"City="重庆"Employee-Name="小李"Employee-Sex="男"Employee-Title="发卖司理"/>
</div>
</form>
</body>
</html>
  如上代码所示,次要设置了@Register指令和自界说服务器控件Company。前者用于为页面引进自界说服务器控件Company,从而完成控件在页面中的使用。在自界说服务器控件Company中次要设置了City、Employee-Name、Employee-Sex和Employee-Title。同时,在开辟职员编码过程当中将会发明,以上4个属性均为VisualStudio2005的智能感知功效所撑持。

  别的,读者还能够以另外一种非连字符情势设置Company控件属性。详细代码以下所示:

<Cp:CompanyID="Company1"runat="server"City="重庆">
<EmployeeName="小李"Sex="男"Title="发卖司理">
</Employee>
</Cp:Company>
  实践上,以上设置Company控件属性的办法与前文使用连字符设置属性的办法是完整分歧的。关于一切连字符情势属性,能够恣意利用两者之一。假如是基于代码可读性的角度而言,后者比前者的可读性更强一些。
<P>  2.完成办法

  上一大节中的Default.aspx页面所包括的Company控件具有3个连字符情势庞大属性。它们是怎样完成的呢?实践上,完成这类情势的庞大属性关头是,在自界说服务器控件完成过程当中,对庞大属性及其子属性设置特定的计划时元数据。

  关于庞大属性而言,次要在该属性完成前设置两个计划时元数据:DesignerSerializationVisibility和NotifyParentProperty。DesignerSerializationVisibility用于指定在计划时序列化组件上的属性时,所利用的耐久性范例。NotifyParentProperty可以使得属性扫瞄器中对子属性的修正关照一向上传到工具模子,并在被修正了子属性的控件中发生修正关照。关于子属性的计划时元数据设置对照复杂,只需在子属性完成前设置一个NotifyParentProperty便可。

  完成自界说服务器控件Company触及两个文件:Company.cs和Employee.cs。前者是自界说服务器控件的完成主体,个中包含各类属性设置、控件出现办法RenderContents等等。后者用于完成庞大属性Employee。上面起首枚举了Company.cs文件源代码。

usingSystem;
usingSystem.Collections.Generic;
usingSystem.ComponentModel;
usingSystem.Text;
usingSystem.Web;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
namespaceWebControlLibrary{
 [DefaultProperty("Text")]
 [ToolboxData("<{0}:Companyrunat=server></{0}:Company>")]
 publicclassCompany:WebControl{
  privateEmployeeemployee;//完成属性City
  [Bindable(true),Category("Appearance"),DefaultValue(""),Description("公司地点乡村")]
  publicstringCity{
   get{
    string_city=(String)ViewState["City"];
    return((_city==null)?String.Empty:_city);
   }
   set{ViewState["City"]=value;}
  }//完成属性Employee

  [Bindable(true),Category("Appearance"),Description("员工信息"),DesignerSerializationVisibility(DesignerSerializationVisibility.Content),NotifyParentProperty(true)]

  publicEmployeeEmployee{
   get{
    if(employee==null){
     employee=newEmployee();
    }
    returnemployee;
   }
  }//重写RenderContents办法,自界说完成控件出现

  protectedoverridevoidRenderContents(HtmlTextWriteroutput){
   output.Write("公司地点乡村:");
   output.Write(City);
   output.WriteBreak();
   output.Write("姓名:");
   output.Write(Employee.Name.ToString());
   output.WriteBreak();
   output.Write("性别:");
   output.Write(Employee.Sex.ToString());
   output.WriteBreak();
   output.Write("职务:");
   output.Write(Employee.Title.ToString());
  }
 }
}
  以上代码显现了自界说服务器控件Company的完成,个中次要包含了一些属性和RenderContents办法的内容。详细属性包含2个:一个是复杂属性City,另外一个是庞大属性Employee。复杂属性City的完成利用了视图形态ViewState。庞大属性Employee则有些出格,其范例是一个类Employee。同时,该属性还设置了两个元数据属性:DesignerSerializationVisibility(DesignerSerializationVisibility.Content)和NotifyParentProperty(true)。前者可用于指定序列化程序应当序列化属性的内容即子属性,后者则可以使得属性扫瞄器中对子属性的修正关照一向上传到工具模子,并在被修正了子属性的控件中发生修正关照。以上两个计划时元数据属性的设置是完成连字符情势庞大属性的关头之一。另外一个关头的地方在于为在完成庞大属性的子属性时未其设置元数据属性。
<P>  上面枚举了详细完成庞大属性Employee的Employee.cs文件源代码。

usingSystem;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Globalization;
usingSystem.Web.UI;
namespaceWebControlLibrary{
 publicclassEmployee{
  privatestring_name;
  privatestring_sex;
  privatestring_title;//完成机关函数1
  publicEmployee(){}//完成机关函数2
  publicEmployee(StringName,StringSex,StringTitle){
   _name=Name;_sex=Sex;_title=Title;
  }//完成属性Name
  [Bindable(true),Category("Appearance"),DefaultValue(""),Description("员工姓名"),NotifyParentProperty(true)]

  publicStringName{
   get{return_name;}
   set{_name=value;}
  }//完成属性Sex

  [Bindable(true),Category("Appearance"),DefaultValue(""),Description("员工性别"),NotifyParentProperty(true)]

  publicStringSex{
   get{return_sex;}
   set{_sex=value;}
  }//完成属性Title

  [Bindable(true),Category("Appearance"),DefaultValue(""),Description("员工职务"),NotifyParentProperty(true)]

  publicStringTitle{
   get{return_title;}
   set{_title=value;}
  }
 }
}
  以上代码完成了Employee类,个中包含机关函数和属性Name、Sex和Title。读者必要注重,为了完成连字符情势庞大属性,以上3个属性都必需设置元数据属性NotifyParentProperty(true)。如许,当子属性产生修正时,.NET框架将主动发生修正关照,而且关照到父属性Employee。

  3.小结

  本文经由过程一个典范示例先容了创立连字符情势庞大属性的完成办法。关于其他情势的庞大属性,比方,外部嵌套情势庞大属性、外部嵌套情势默许庞大属性等,本文将不再做更多注释。实践上,完成庞大属性是有其本身纪律可循的。只需读者可以依照划定的办法完成,基础上都不会呈现太年夜的成绩。一般的指的.net就是跟java相对的那种,主要是做企业级应用的。你如果想学这个,主要就是学C#和数据库。(ASP.NET好像很重要的,应该也要学的,ASP.NET上好像可以结合VB和C#等多种语言,但是微软主推C#)
金色的骷髅 该用户已被删除
沙发
发表于 2015-1-19 21:17:06 | 只看该作者
我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。
不帅 该用户已被删除
板凳
发表于 2015-1-28 11:20:19 | 只看该作者
众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
乐观 该用户已被删除
地板
发表于 2015-2-5 21:04:17 | 只看该作者
asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源
飘飘悠悠 该用户已被删除
5#
发表于 2015-2-13 15:14:24 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
若天明 该用户已被删除
6#
发表于 2015-3-3 23:21:08 | 只看该作者
逐步缩小出错代码段的范围,最终确定错误代码的位置。
透明 该用户已被删除
7#
发表于 2015-3-11 14:34:43 | 只看该作者
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
小妖女 该用户已被删除
8#
发表于 2015-3-18 23:49:40 | 只看该作者
众所周知,Windows以易用而出名,也因此占据不少的服务器市场。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-12 00:28

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表