對於使用Asp.net開發已經至關的熟悉,假設直接使用Asp.net開發平臺的話相信很是easy就行上手,但世事並不是咱們想象的那麼簡單,此次遠洋地產代號爲海鷗2號的平臺開發使用了微軟的MVC框架,而且在開發時採用的是SOA,面向服務框架的程序設計。它是基於面向對象的但又不是全然面向對象。能夠說是面向服務的WebService開發。html
這套框架是由微軟直接提供。微軟的project師們對框架功能封裝的很是完美,對開發者常用的開發方法甚至每個推斷循環都作了封裝,這也是它的缺點,平臺封裝太完全,在開發時一些複雜的功能平臺不能實現的就必須本身開發。web
不知道何時開始關注變的關注技術細節了。對一些曾經沒有接觸過的東西感受特別蹩腳,每當在接觸新東西的時候老是在尋找舊東西的影子,對於開發來講這是好事。說明已經有了很是多經驗,新東西變成了舊東西能很是快上手開發這就是開發者的能力,假設映射到生活中的話那就是大事了。生活需要往前看。過去的不能夠再返回。因此要向前看,過了山眼界就開闊了。緩存
回到文章的正題,事實上本篇文章重點在於討論Asp.net本身定義控件的註冊方法。由註冊問題引起了一系列的思考。使用Asp.NET開發的本身定義控件在使用前需要將它註冊到頁面表單中,註冊後的本身定義控件就能實現正常的使用。例如如下的使用演示樣例:框架
<%@ Register Assembly="MCS.Library.SOA.Web.WebControls" Namespace="MCS.Web.WebControls" TagPrefix="SOA" %>
同一時候它也有很是多屬性例如如下:
spa
Assembly:本身定義控件所在的程序集名稱,與tagprefix 屬性關聯的命名空間所駐留的程序集;.net
Note:需要在程序集中引用被註冊的本身定義控件所在的dll,另外它可以不指定,僅僅要將開發的本身定義控件的源碼放到App_Code目錄中就能夠,不然必須指定該屬性。debug
Note:使用該命令引用控件時需要將控件的代碼放置到下面位置設計
(3)做爲全局緩存(GAC)中編譯和簽署的程序集。能在多個程序集間共享該控件,經過向assembly中分配在識別的字符串,例如如下:code
<%@ Register tagprefix="custom" namespace="Mycompany.namespace" assembly="Mycompany.namespace.control, Version=1.2.3.4, PublicKeyToken=12345678abcdefgh, Culture=neutral" %>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="SinoOcean.Seagull2.InductionAssessment.Default" %>
<!--注冊用戶控件toolBarTemplate.ascx--> <%@ Register TagPrefix="tbt" TagName="toolBarTemplate" Src="~/UserControls/toolbarTemplate.ascx" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <!--使用用戶控件toolBarTemplate.ascx--> <tbt:toolBarTemplate runat="server" /> </div> </form> </body> </html>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="SinoOcean.Seagull2.InductionAssessment.Default" %>
<!--註冊本身定義控件--> <%@ Register Assembly="MCS.Library.SOA.Web.WebControls" Namespace="MCS.Web.WebControls" TagPrefix="SOA" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <!--使用本身定義控件--> <SOA:DataBindingControl runat="server" ID="bindingControl" AutoBinding="true" IsValidateOnSubmit="false"> <ItemBindings> <SOA:DataBindingItem ControlID="opinionListView" DataPropertyName="Opinions"> </SOA:DataBindingItem> </ItemBindings> </SOA:DataBindingControl> </div> </form> </body> </html>
add元素一般配置在web.config中指定程序集中應用的控件,這樣就配置了程序集動態資源編譯期間使用的程序集引用,當編譯每一個代碼模塊時,ASP.NET 會本身主動將該程序集連接到資源。
add 元素的值是程序集名稱,而不是 DLL 路徑。 ASP.NET 查找該程序集名稱,以找到其物理 DLL 位置。orm
還可以選擇指定星號 (*) 通配符來加入應用程序的專用程序集緩存中的每一個程序集,該程序集緩存位於應用程序的 \bin 子文件夾或 .NET Framework 安裝文件夾( %systemroot%\Microsoft.NET\Framework\ 版本號\)中。
例如如下代碼演示樣例:
<system.web> <!--compilation指定編譯時的屬性--> <compilation debug="true" defaultLanguage="js" targetFramework="4.0"> <assemblies> <add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> <add assembly="System.Configuration.Install, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="System.Runtime.Serialization.Formatters.Soap, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="System.Transactions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> <add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> <add assembly="System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> <add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> <add assembly="System.Web.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="System.DirectoryServices.Protocols, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="System.EnterpriseServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="System.ServiceProcess, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="System.Web.RegularExpressions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> </assemblies> </compilation> <authentication mode="None" /> <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID" validateRequest="false" /> <httpRuntime requestValidationMode="2.0" /> </system.web>
註冊本身定義控件的方法和註冊dll的方法還有很是多不一樣,當中本身定義控件的註冊僅僅需要在使用的頁面使用@Register就能夠。但是想要在設計器中使用一個第三方控件就必須在系統中註冊,因此兩種有很是大的區別。文章重點討論了@Register的用法。另外還加入了Compilation的用法。制定了在解決方式進行編譯時需要調用編譯的內容。