日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

在ASP.NET AJAX中使用应用程序服务和本地化(3):用户个性化组件ProfileService

發布時間:2025/3/14 asp.net 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在ASP.NET AJAX中使用应用程序服务和本地化(3):用户个性化组件ProfileService 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文來自《ASP.NET AJAX程序設計 第II卷:客戶端Microsoft AJAX Library相關》的第五章《應用程序服務和本地化》。

?

在內建了身份認證應用程序服務之后,ASP.NET 2.0已經提供了對用戶管理的初步支持。然而,用戶信息卻不僅僅只是用戶名和密碼這兩項,對于一般網站來講,我們都需要提供一些與用戶帳號相關聯的自定義屬性。例如在BBS程序中,這類自定義屬性就有用戶的積分、等級、簽名檔、頭像等,這些自定義屬性都與用戶帳號一一對應。為此,ASP.NET 2.0特意內建了用戶個性化應用程序服務,同樣以統一的方式提供給開發者。ASP.NET 2.0內建的用戶個性化應用程序服務的配置、使用非常簡單,也提供了足夠靈活的擴展能力。

參考:若想了解更多有關ASP.NET 2.0的用戶個性化服務,請參考這篇MSDN文章:《ASP.NET Profile Properties?》(http://msdn2.microsoft.com/en-us/library/at64shx3.aspx)。

ASP.NET AJAX框架的用戶個性化服務能夠與ASP.NET 2.0的用戶個性化應用程序服務集成起來,并為其提供客戶端的JavaScript調用代理。ASP.NET AJAX客戶端部分用戶個性化代理的相關功能統一由客戶端ProfileService對象提供。

ProfileService對象的完全限定名為Sys.Services.ProfileService。與AuthenticationService對象類似,ProfileService是一個單例(Singleton)模式的對象,無須手工創建實例即可使用。只要頁面中包含有ScriptManager控件,我們即可在客戶端直接訪問到ProfileService對象,進而間接地與服務器端用戶個性化服務打交道并使用ASP.NET 2.0提供的用戶個性化服務的相關功能,例如加載或保存用戶的個性化屬性等——ASP.NET AJAX框架將負責整個異步通訊的實現細節,就像ASP.NET AJAX異步通訊層為Web Service生成客戶端代理一樣。

ProfileService對象提供了兩個方法:load()和save(),分別用來加載和保存用戶的個性化屬性,還提供了一個名為properties的字段,用來以類似服務器端“強類型訪問方式”的方法在客戶端訪問用戶個性化屬性。此外,ProfileService還暴露出了一系列的常用屬性。下面我們來逐一介紹:

?

5.3.1 load()方法

load()方法用來加載當前用戶的個性化屬性,在加載完成之后,我們即可在客戶端通過ProfileService對象的properties屬性訪問到已經被加載的各個用戶個性化屬性。調用load()方法的完整語法如下:

Sys.Services.ProfileService.load( propertyNames, loadCompletedCallback, failedCallback, userContext );

其中各個參數的含義如表5-4所示。

表5-4 ProfileService對象load()方法的參數

  • propertyNames:一個包含string對象的數組,表示需要從服務器端加載的用戶個性化屬性集合。若是該參數為null的話,則ASP.NET AJAX將自動加載所有允許客戶端讀取的用戶個性化屬性。關于如何將ASP.NET 2.0中的各個用戶個性化屬性有選擇性地暴露給客戶端,將在本章下一節的示例程序中介紹。
  • loadCompletedCallback:加載用戶個性化屬性完成之后的回調函數。
  • failedCallback:加載用戶個性化屬性失敗時的回調函數。導致失敗的原因可能是網絡連接超時、或是用戶個性化服務內部拋出異常等。
  • userContext:隨本次異步調用發送至服務器端的用戶上下文對象。
  • 表5-4中所列出的4個參數均為可選。對于loadCompletedCallback和failedCallback參數,如果為ProfileService對象設置了默認值的話(將在稍后介紹),也可以省略。

    加載用戶個性化屬性完成之后的回調函數,即loadCompletedCallback參數所指定的函數的完整的簽名如下(回調函數及其參數的名稱可以根據需要自行更改):

    function onLoadCompleted(numProperties, userContext, methodName)

    其中,ASP.NET AJAX在執行回調時為我們提供了3個參數:

  • numProperties:表示此次加載過程中加載了的用戶個性化屬性的個數。
  • userContext:在調用load()方法時傳遞的用戶上下文對象。
  • methodName:調用方法的方法名。
  • 調用認證服務失敗之后的回調函數,即failedCallback參數所指定的函數的完整的簽名如下(回調函數及其參數的名稱可以根據需要自行更改):

    function onProfileFailed(error, userContext, methodName)

    ASP.NET AJAX在執行回調時同樣為我們提供了3個參數:

  • error:導致認證服務失敗的異常對象。
  • userContext:在調用load()方法時傳遞的用戶上下文對象。
  • methodName:調用方法的方法名。
  • ?

    5.3.2 save()方法

    save()方法用來保存當前可能經過修改的用戶個性化屬性。調用save()方法的完整語法如下:

    Sys.Services.ProfileService.save( propertyNames, saveCompletedCallback, failedCallback, userContext );

    其中各個參數的含義如表5-5所示。

    表5-5 ProfileService對象logout()方法的參數

  • propertyNames:一個包含string對象的數組,表示需要保存至服務器的用戶個性化屬性集合。若是該參數為null的話,則ASP.NET AJAX將自動保存所有允許從客戶端寫入的用戶個性化屬性。關于如何將ASP.NET 2.0中的各個用戶個性化屬性有選擇性地暴露給客戶端,將在本章下一節的示例程序中介紹。
  • saveCompletedCallback:保存用戶個性化屬性完成之后的回調函數。
  • failedCallback :保存用戶個性化屬性失敗時的回調函數。導致失敗的原因可能是網絡連接超時、或是用戶個性化服務內部拋出異常等。
  • userContext:隨本次異步調用發送至服務器端的用戶上下文對象。
  • 表5-5中所列出的4個參數均是可選的。對于saveCompletedCallback和failedCallback參數,如果為ProfileService對象設置了默認值的話(將在稍后介紹),也可以省略。

    保存用戶個性化屬性完成之后的回調函數,即saveCompletedCallback參數所指定的函數的完整的簽名如下(回調函數及其參數的名稱可以根據需要自行更改):

    function onSaveCompleted(numProperties, userContext, methodName)

    其中,ASP.NET AJAX在執行回調時為我們提供了3個參數:

  • numProperties:表示此次保存過程中保存了的用戶個性化屬性的個數。
  • userContext:在調用save()方法時傳遞的用戶上下文對象。
  • methodName:調用方法的方法名。
  • 保存用戶個性化屬性失敗時的回調函數,即failedCallback參數所指定的函數的完整的簽名如下(回調函數及其參數的名稱可以根據需要自行更改):

    function onProfileFailed(error, userContext, methodName)

    ASP.NET AJAX在執行回調時同樣為我們提供了3個參數:

  • error:導致認證服務失敗的異常對象。
  • userContext:在調用save()方法時傳遞的用戶上下文對象。
  • methodName:調用方法的方法名。
  • ?

    5.3.3 properties字段

    ASP.NET 2.0所提供了用戶個性化應用程序服務中的一個非常強大的特性就是,它允許開發者以強類型的方式訪問到各個預定義的用戶個性化屬性。例如,若我們在web.config文件的<configuration />\<system.web />節中定義了如下的用戶個性化屬性:??

    <profile enabled="true"> <properties> <add name="Address" type="System.String" /> <add name="Age" type="System.Int32" /> <add name="InfoPanelPosition" type="System.Drawing.Point" /> </properties> </profile>

    那么在ASP.NET頁面中,即可直接以強類型的方式訪問到這些屬性。請參考如下一段服務器端C#代碼:

    string address = Profile.Address; int age = Profile.Age; System.Drawing.Point infoPanelPosition = Profile.InfoPanelPosition;

    雖然在客戶端使用的JavaScript是一門動態語言,其中的變量并沒有那么“嚴格”的類型約束,不過ProfileService對象所提供的properties字段依然能夠讓開發者能夠以類似的語法規則在客戶端訪問用戶個性化屬性。

    在調用ProfileService對象的load()方法,并成功加載了用戶個性化屬性之后,我們即可使用其properties字段以類似上述C#代碼的方式在JavaScript中訪問到各個用戶個性化屬性;

    var address = Sys.Services.ProfileService.properties.Address; var age = Sys.Services.ProfileService.properties.Age; var infoPanelPosition = Sys.Services.ProfileService.properties.InfoPanelPosition;

    ProfileService對象的properties字段也能夠支持web.config文件中定義的用戶個性化組(Profile Group)。例如如下用戶個性化組的定義:

    <profile enabled="true"> <properties> <group name="Address"> <add name="Street" type="System.String" /> <add name="City" type="System.String"/> <add name="PostalCode" type="System.String" /> </group> </properties> </profile>

    在客戶端JavaScript中,我們也可以使用如下的語法(即[GroupName].[PropertyName])對這個用戶個性化組中的屬性進行訪問:

    var street = Sys.Services.ProfileService.properties.Address.Street; var city = Sys.Services.ProfileService.properties.Address.City; var postCode = Sys.Services.ProfileService.properties.Address.PostCode;

    ?

    5.3.4 常用屬性

    除了前面介紹的load()、save()方法以及properties屬性之外,ProfileService對象還提供了幾個經常用到的屬性,如表5-6所示。

    表5-6 ProfileService對象的常用屬性

  • timeout:獲取或設定加載/保存用戶個性化屬性的超時時間,單位為毫秒。
  • defaultLoadCompletedCallback :獲取或設定默認的加載用戶個性化屬性完成之后的回調函數。
  • defaultSaveCompletedCallback:獲取或設定默認的保存用戶個性化屬性完成之后的回調函數。
  • defaultFailedCallback:獲取或設定默認的加載/保存用戶個性化屬性失敗時的回調函數。
  • 如下代碼演示了設置ProfileService對象的timeout屬性:

    Sys.Services.ProfileService.set_timeout(3000);

    若是預先設定了defaultLoadCompletedCallback、defaultSaveCompletedCallback和defaultFailedCallback屬性,那么在調用ProfileService對象的load()和save()方法時,即可不必重復指定各個回調函數。例如,如下代碼就設定了ProfileService對象的這3個屬性,并定義了相應的默認回調函數:

    Sys.Services.ProfileService.set_defaultLoadCompletedCallback(onLoadCompleted); Sys.Services.ProfileService.set_defaultSaveCompletedCallback(onSaveCompleted); Sys.Services.ProfileService.set_defaultFailedCallback(onProfileFailed); ? function onLoadCompleted(numProperties, userContext, methodName) { // ... } ? function onSaveCompleted(numProperties, userContext, methodName) { // ... } ? function onProfileFailed(error, userContext, methodName) { // ... }

    隨后,我們即可直接使用如下代碼加載/保存用戶的個性化屬性了,是不是顯得非常簡單呢?

    Sys.Services.ProfileService.load(); Sys.Services.ProfileService.save();

    轉載于:https://www.cnblogs.com/dflying/archive/2007/07/13/812823.html

    總結

    以上是生活随笔為你收集整理的在ASP.NET AJAX中使用应用程序服务和本地化(3):用户个性化组件ProfileService的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。