再叙2005Web控件(一)

-本文示例来自MSDN.
VS.NET 2005中的Web控件一种是通过添加添加新项中的“添加Web用户控件”,在设计器里设计用户控件界面,在web页面通过<%@ Register Src="Controls/AddressForm.ascx" TagName="AddressForm" TagPrefix="PetShopControl" %>来注册。

一、使用App_Code,不通过编译,直接使用。
    1:新建一个网站,添加WelcomeControl.cs,这时VS会自动添加一个文件夹App_Code,并将该.cs文件添加
       到目录下。
    2:在文件中添加如下代码
 1 
 2  using  System.Data;
 3  using  System;
 4  using  System.ComponentModel;
 5  using  System.Security.Permissions;
 6  using  System.Web;
 7  using  System.Web.UI;
 8  using  System.Web.UI.WebControls;
 9 
10  namespace  PetShopCopy.Controls
11  {
12      [AspNetHostingPermission(System.Security.Permissions.SecurityAction.Demand,
13          Level  =  AspNetHostingPermissionLevel.Minimal),
14      AspNetHostingPermission(System.Security.Permissions.SecurityAction.InheritanceDemand,
15          Level  =  AspNetHostingPermissionLevel.Minimal),
16      DefaultProperty( " Text " ),
17      ToolboxData( " <{0}:WelComeControl runat=\ " server\ " ></{0}:WelComeControl> " )
18      ]
19       public   class  WelComeControl : WebControl
20      {
21          [
22          Bindable( true ),
23          Category( " Appearance " ),
24          DefaultValue( " 匿名 " ),
25          Description( " 欢迎的标题 " ),
26          Localizable( true )
27          ]
28           public   virtual   string  Text
29          {
30               get
31              {
32                   string  s  =  ( string )ViewState[ " Text " ];
33                   return  (s  ==   null ?  String.Empty : s;
34 
35              }
36               set
37              {
38                  ViewState[ " Text " =  value;
39 
40              }
41          }
42           protected   override   void  RenderContents(HtmlTextWriter writer)
43          {
44              writer.WriteEncodedText(Text);
45               if  (Context  !=   null )
46              {
47                   string  s  =  Context.User.Identity.Name;
48                   if  (s  !=   null   &&  s  !=   string .Empty)
49                  {
50                       string [] split  =  s.Split( ' \\ ' );
51                       int  n  =  split.Length  -   1 ;
52                       if  (split[n]  !=  String.Empty)
53                      {
54                          writer.Write( " " );
55                          writer.Write(split[n]);
56                      }
57                  }
58                  writer.Write( " ! " );
59                  writer.Write( " 这个是测试控件哦,好漂亮! " );
60              }
61               // base.RenderContents(writer);
62          }
63 
64      }
65  }
     3:添加default.aspx页面
     4:注册控件:有两种方式注册:1)在页面顶端<%@ Register Namespace="PetShopCopy.Controls"
     TagPrefix="aspSample" %>     2)在web.config <System.web>节添加
    
1  < system .web >
2         < pages >
3           < controls >
4             < add  tagPrefix ="aspSample"  namespace ="PetShopCopy.Controls"   />
5           </ controls >
6         </ pages >
     5:添加aspsSample控件
   
< aspSample:WelComeControl  BackColor =wheat  ForeColor =saddleBrown   id ="WelComeControl1"  runat ="server" >
        
</ aspSample:WelComeControl >
     

二、编译成程序集
    编译成程序集有利于分发给其他软件小组成员使用你编写的控件。并且可以在工具箱中显示,如果
    winform中的控件那样。
    1:添加环境变量
      我的电脑->属性->高级->环境变量/系统变量/ 打开path属性编辑,在后面加分号“;”,
      然后是.net Framework的安装路径通常是:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
    2:在App_Code目录添加AssemblyInfo.cs的文件,文件内容
    
using  System;
using  System.Web.UI;
[assembly:TagPrefix(
" PetShopCopy.Controls " , " aspSample " )]
        目的是当从工具箱中将控件拖到页面时,自动在页面顶端生成注册代码。它建立了命名空间和前缀
       之间额映射
     3:编译控件成程序集
        在VS.NET2005命令提示下,将路径定位到App_Code目录下
       执行命令:
        “csc /res:sample.bmp,PetShopCopy.Controls.WelcomeControl.bmp
       /t:library /out:PetShopCopy.Controls.dll /r:System.dll /r:System.Web.dll WelcomeControl.cs”
       其中/res是定义控件显示的图标。/t:表示创建一个程序集 /out程序集名称/r连接到程序集的程序集 后面是.cs源代码。
      4:web.config中的注册
1       < system.web >
2         < pages >
3           < controls >
4             < add tagPrefix = " aspSample "   namespace = " PetShopCopy.Controls "  assembly = " PetShopCopy.Controls " />
5           </ controls >
6         </ pages >
        assembly就是程序集的名称。
      5:最后一步就是开始使用控件了,在工具箱中添加新项,然后将其拖放到web页面
    
      
        



你可能感兴趣的:(Web)