asp.net基礎入門篇之四

來源:互聯網
上載者:User
12 個人化
12.1 為訪客供給個人化辦事
12.2 ASP.NET中的個人化
12.2.1 使用者裝置檔案

時候無和私,汗青無情使用者裝置檔案時ASP.NET個人化辦事的核心。

12.2.2 個人化供給法度

生命的黎明是樂土,芳華才是真正的天堂。PersonalizationProvider抽象類別

12.3 個人化功能的應用

個人化功能的應用很是簡單。我們在web.config中定義個人化屬性。ASP.NET會主動產生一個類,以便利開闢者經管個人化。

12.3.1 在web.config中定義裝置檔案

假定我們設計網站時決意跟蹤使用者以下資訊

-- 登入次數(整型)

-- 使用者名稱(字串)

-- 性別(布爾值)

-- 誕辰(日期)

那麼以上屬性可以如許在web.config中定義:

 代碼如下 複製代碼

<system.web>

<profile automaticSaveEnabled=”True”>

<add name=”NumVisits” type=”System.Int32”/>

<add name=”UserName” type=”System.String”/>

<add name=”Gender” type=”System.Boolean”/>

<add name=”Birthday” type=”System.DateTime”/>

</profile>

</system.web>

在web.config檔案中定義完屬性後,便可以經由過程當前HttpContext的Profile屬性來裝置檔案資訊。

12.3.2 裝置檔案資訊的應用

ProfileBase可以或許默示web.config中定義的裝置檔案資訊。可以像下面如許應用GetPropertyValue和SetPropertyValue辦法來接見裝置檔案屬性;

 代碼如下 複製代碼

Protected void Page_Load(object sender,EventArge e)

{

ProfileBase profile = HttpContext.Current.Profile;

String name = (string)profile.GetPropertyValue(“Name”);

If(name!=null)

{

Response.Write(“Hello ”+ name);

}

}

12.3.3 裝置檔案變革的儲存

 代碼如下 複製代碼

ProfileBase profile = HttpContext.Current.Profile;

Profile.SetPropertyValue(“Name”,this.TextBoxName.Text);

profile.Save();

12.3.4 裝置檔案與使用者

使用者和裝置檔案資訊時經由過程使用者標識來接洽關係的。預設景象下,ASP.NET會應用HttpContext中的User.Identity.Name來作為資料存放區的鍵。業正因為此,裝置檔案一般只供給給經由過程身分識別驗證的使用者應用。

不過Asp.NET也支撐匿名裝置檔案。這也是web.config中裝置的。匿名裝置檔案跟蹤機制預設會採取Cookie。然而,可以使ASP.NET採取重整的URL。重整的URL是一種包含某種鍵的URL,這個鍵可以或許標識用戶端,並隨懇求回傳至辦事器。

應用裝置檔案:

1. 建立ASP.NET Web應用法度 MakeItPersonal

2. 為使個人化功能正常工作,Visual Studio會建立一個本機資料庫。

3. 更新web.config檔案,在<profile>元素中添加裝置檔案屬性。

 代碼如下 複製代碼

<profile>

<providers>

<clear/>

<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>

</providers>

<properties>

<add name="Theme" type="System.String"/>

<add name="Name" type="System.String"/>

<add name="Birthdate" type="System.DateTime"/>

<group name="Address">

<add name="StreetAddress" type="System.String"/>

<add name="City" type="System.String"/>

<add name="State" type="System.String"/>

<add name="ZipCode" type="System.String"/>

</group>

</properties>

</profile>

<!--啟用匿名個人化跟蹤功能-->

 代碼如下 複製代碼

<anonymousIdentification enabled="true"

cookieName=".ASPXANONYMOUSUSER"

cookieTimeout="120000"

cookiePath="/"

cookieRequireSSL="false"

cookieSlidingExpiration="true"

/>

</system.web>

protected void Page_Load(object sender, EventArgs e)

{

if (!this.IsPostBack)

{

ProfileBase profile = HttpContext.Current.Profile;

//若是存在裝置資訊則將它們顯示出來

string theme = (string)profile.GetPropertyValue("Theme");

this.tbName.Text = (string)profile.GetPropertyValue("Name");

this.tbAddress.Text = (string)profile.GetPropertyValue("Address.StreetAddress");

this.tbCity.Text = (string)profile.GetPropertyValue("Address.City");

this.tbState.Text = (string)profile.GetPropertyValue("Address.State");

this.tbZip.Text = (string)profile.GetPropertyValue("Address.ZipCode");

this.DropDownList1.SelectedValue = (string)profile.GetPropertyValue("Theme");

this.Calendar1.SelectedDate = (DateTime)profile.GetPropertyValue("Birthdate");

}

}

protected void btnSub_Click(object sender, EventArgs e)

{

if (this.User.Identity.IsAuthenticated)

{

ProfileBase profile = HttpContext.Current.Profile;

profile.SetPropertyValue("Theme", "SeeingRed");

profile.SetPropertyValue("Name", this.tbName.Text);

profile.SetPropertyValue("Address.StreetAddress", this.tbAddress.Text);

profile.SetPropertyValue("Address.City", this.tbCity.Text);

profile.SetPropertyValue("Address.State", this.tbState.Text);

profile.SetPropertyValue("Address.ZipCode", this.tbZip.Text);

profile.SetPropertyValue("Theme", this.DropDownList1.SelectedValue);

profile.SetPropertyValue("Birthdate", this.Calendar1.SelectedDate);

profile.Save();//儲存裝置資訊

}

}

12.4 快速參考

定義個人化裝置檔案的設定
在web.config中經由過程<profile>來定義用於建樹裝置檔案架構的名稱和類型對
接見裝置檔案的屬性
經由過程當前的HttpContext來擷取裝置檔案對象,並應用GetPropertyValue和SetPropertyValue辦法接見
經由過程Cookie跟蹤匿名裝置檔案
在web.config中啟用anomymousIdentification,並為須要的裝置檔案屬性添加allowAnonymous特點
13. Web組件
13.1 “Web組件”簡史
13.1 “Web組件”的長處

“Web組件”控制項可以用來實現門戶網站。工作流程和協作經管如今已成為網站首要應用標的目標之一。

ASP.NET”Web組件”的開闢首要向以下3種情境:

n 開闢“Web組件”控制項

n 構建採取“Web組件”控制項的常規頁面

n 實現門戶網站中的“Web組件”頁面和“Web組件”

13.3 “Web組件”控制項的開闢

所有“Web組件”控制項都可以看做是現有ASP.NET辦事器控制項的一個超集。可以或許在特定景象中以編程體式格式把握“Web組件”控制項,開闢者還可以經由過程從System.Web.UI.WebControls.WebParts.WebPart類派生來建立自訂的“Web組件”控制項。

13.3.1 “Web組件”頁面的開闢

一般的網頁就可以或許應用“Web組件”。Visual Studio支撐建立包含WebPart控制項的頁面。

開闢WebPart頁面須要為頁面添加WebPartManager和若干地區,並為這些地區添加WebPart控制項

13.3.2 “Web組件”應用法度的開闢

最後,我們可以經由過程WebPart控制項來開闢完全的應用法度。例如,假設要構建一個門戶。若是應用WebPart控制項,則可以實現可自訂的個人化頁面。“Web組件”還合適構建常用的應用法度(如共用記錄或文檔的應用法度),並可以將其打包公布,然後批量安排到其他公司的網站上。

13.4 “Web組件”的架構

“Web組件”的架構承擔著多方面任務。“Web組件”的職責是充當更高層次的UI元素,所以功能組件被分化為頁面經管和地區經管。不合WebPart控制項須要調和一致。此外,頁面中的每個功能區域凡是須要作為一組控制項來處理懲罰(如為了經管布局)。

13.4.1 WebPartManager與WebPartZone

“Web組件”由地區經管,而地區由WebPartManager經管。只要頁面應用了WebPart,非論幾許,就都要添加WebPartManager。WebPartManager負責經管和調和地區和地區中的控制項。WebPartZone可以或許經管自身控制項湊集中的UI元素。

在地區中,ZoneTemplate 用於容納“Web組件”。若是ZoneTemplate中有常規的ASP.NET控制項,那麼ASP.NET會按WebPart的情勢來封裝它。

13.4.2 內建的地區

“Web組件”地區用於經管一組控制項的布局。ASP.NET中內建了以下4種地區:

n WebPartZone 包含了經管地區中辦事器端控制項的根蒂根基功能。這種地區可以或許容納的辦事器端控制項和WebPart控制項。常規的控制項在運行時會由GenericWebPart控制項封裝,以使它們具有WebPart的行動。

n CatalogZone這種地區(目次地區)用於承載CatalogPart控制項。“目次”一般用於經管頁面中組件的可見度。CatalogZone控制項可以或許按照顯示模式來顯示和隱蔽其內容。之所以稱其為“目次”,是因為它充當了終極使用者可以從中選擇的控制項目次。

n EditorZone 該控制項容許終極使用者按照小我偏好批改和個人化網頁。對網站進行個人化包含設定小我資訊(若是誕辰,性別特定的稱呼,網站的接見次數等),色彩搭配和布局….EditorZone旨在實現這方面的特點,它也可以或許儲存和載入相干的設定,以便使用者鄙人次登入時可以或許持續應用。

n ConnectionZone “Web組件”之間往往須要動態串連和通訊。ConnectionZone恰是為此而設立的。

13.4.2 內建的”Web組件”

n DeclarativeCatalogPart 在構建WebPart頁面時,可以動態調添加或聲明組件。

n 終極使用者可能會經由過程開啟和封閉控制項來自訂網站。

n PageCatalogPart 終極使用者可能會經由過程開啟和封閉控制項來自訂網站。

n ImportCatalogPart 應用ImportCatalogPart,使用者可以從xml資料匯入“Web組件”的描述。

n AppearanceEditorPart 該控制項用於編輯與某個WebPart或GenericWebPart接洽關係的外觀屬性。

n BehaviorEditorPart 該控制項實現了對WebPart或GenericWebPart行動的編輯

n LayoutEditorPart 該控制項用於編輯與某個WebPart或GenericWebPart接洽關係的布局屬性。

n PropertyGridEditorPart 該控制項支撐使用者編輯WebPart的自訂屬性(而其他EditorPart控制項只支撐對WebPart類現有屬性進行編輯)

應用“Web組件”:

應用網站支撐“Web組件”
針對應用法度的資料庫運行aspnet_regsql,以確保啟用了裝置檔案和角色
應用頁面支撐WebPart控制項
為頁面添加WebPartManager
應用“Web組件”頁面支撐編輯功能
為頁面添加EdiorZone
添加一個能使辦事器端控制項接管“Web組件”架構經管的地區
為頁面添加WebPartZone
容許使用者動態地從控制項湊集中添加控制項
為頁面添加CatalogZone,在“編輯模板”模式下添加慾望在目次中呈現的控制項
建立“Web組件”

從System.Web.UI.WebControls.WebParts.WebPart類派生子類,然後選擇以下隨便率性一種辦法來浮現內容:

n 在Web組件的Reader辦法中浮現HTML

n 在ASP.NET控制項,然後將其添加到“WEB組件”的Controls湊集中,以實現主動浮現

狀況經管與緩衝
14. 會話狀況
14.1 何為會話狀況
14.2 ASP.NET與會話狀況
14.3會話狀況簡介

實踐會話狀況:

1. 建立ASP.NET空Web應用法度 SeesionState.

2. 添加一個Web表單 將其定名為Default.aspx。在這個頁面中添加一個文字框,以便輸入要儲存在會話狀況的值。為這個文字框添加一個標籤。

3. 添加兩個按鈕盒兩個標籤。

4. 添加一個字串成員變數。

5. 運行這個頁面。在文字框中鍵入一些文本,然後單擊“添加到會話狀況”。會發明成員變數不克不及儲存資料。頁面對象的生命週期十分短暫。只在懇求的處理懲罰時代有效,隨後便會被燒毀,成員變數在懇求處理懲罰完畢後也會立即清除。我們提交後獲得的新頁面是一個新對象,成員變數也會從頭初始化。

6. 用會話狀況可以解決這個題目。編寫代碼將字串儲存在會話狀況中。

7. 運行成果 資料獲得儲存。

14.4 會話狀況與錯雜的資料類型

應用ADO.NET對象,資料繫結控制項和會話狀況:

14.5 會話狀況與裝置

1. 完全禁用

2. 在過程中儲存會話狀況

3. 在狀況辦事器中儲存會話狀況

4. 在資料庫中儲存會話狀況

14.5.1 禁用會話狀況

我們可以經由過程IIS的ASP.NET會話狀況裝置對象在web.config檔案中裝置

14.5.2 在過程中儲存會話狀況
14.5.3 在狀況辦事器中儲存會話狀況
14.5.4 在資料庫中儲存會話狀況
14.6 會話狀況的跟蹤
14.6.1 經由過程Cookie跟蹤會話狀況
14.6.2 經由過程URL跟蹤會話狀況
14.6.3 主動式偵測
14.6.4 應用裝置裝置檔案
14.6.5 會話狀況逾時
14.7 會話的其他設定
14.8 Wizard控制項--會話狀況的一種調換規劃

14.8 快速參考
接見當前用戶端的會話狀況
應用Page.Session屬性或當前高低文的HttpContext.Session屬性
接見當前用戶端工作階段狀況中的值
會話狀況是一種鍵/值對湊集。可以經由過程儲存資料時應用的鍵(字串)來接見響應的資料
在過程中儲存會話狀況
在web.confgi中編輯seessionState節點特點。將mode設定為Inproc
在狀況辦事器中儲存會話狀況
在web.config中編輯sessionState節的特點。將mode設定為StateServer, 並設定stateConnectionString
在SQL Server中儲存會話狀況
在web.config中編輯sessionState節的特點。將mode設定為SQLServer, 並設定salConnectionString
禁用會話狀況
在web.config中編輯sessionState節的特點。將mode設定為Off
應用Cookie來跟蹤會話狀況
在Web.config中編輯sessionState節的特點。將cookieless設定為false(預設值)
應用URL來跟蹤會話狀況
在web.config中編輯sessionState節的特點。將cookieless設定為true
設定會話狀況逾時
在web.config中編輯sessionState節的特點。將timeout設定為逾時樹(以分鐘為單位)MRMY

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.