2009-09-19 46 views
2

我想更改現有用戶的配置文件,而無需爲用戶創建新配置文件。例如:我有一個用戶名Usr1,我只想改變他的年齡,我該怎麼做?更新ASP.NET中的現有用戶配置文件

+0

您使用的是什麼技術? – 2009-09-19 12:45:33

回答

2

this文章的全部細節。請注意,在某些情況下(請參閱我對其他答案的評論),ProfileCommon不會生成。

在這種情況下,你需要恢復使用ProfileBase:

ProfileBase profile = context.Profile; 
DateTime dob= profile.GetPropertyValue("dob") as DateTime; 
... 
profile.SetPropertyValue("dob",dob); 
1

如果你看看this article,它說明了如何做到這一點...

+0

如果這是一個** web應用程序**(認爲是Asp.net MVC),那麼ProfileCommon不是自動生成的,您必須恢復到非類型安全的ProfileBase – spender 2009-09-19 12:07:58

3

當你在你的頁面提供給您的ProfileCommon類用於訪問配置文件。 profilecommon類是在編譯web項目期間由web.net自動從web.config配置文件設置生成的。

如果您想使用app_code文件夾中的配置文件,則必須使用profilebase類。 Profilecommon在頁面中可用也來自此類。

Profilebase可就是這樣

HttpContext.Profile or HttpContext.Current.Profile 

訪問要讀你需要做的概況值以下

HttpContext.Profile.GetPropertyValue("propertyName"); 

要將值寫入到你需要寫

HttpContext.Profile.SetPropertyValue("propertyName", "propertyValue"); 
輪廓
2

如果你想要做的是更新另一個用戶的個人資料(例如,你是一個管理員輸入一個客戶的用戶名),你可以使用類似下面的內容。

Dim p As ProfileCommon = Profile.GetProfile("Usr1") 

p.TestValue1 = "New Value" 
p.TestValue2 = "Another New Value" 

p.Save() 

同樣,如果你使用的是web項目,而不是一個網站,你將不得不使用p.SetPropertyValue(),而不是強類型的屬性名稱。

-1

我有一個類似的問題,並與SQL腳本搜索解決方案。這有點困難,但如果服務器端代碼不是一個選項,這是可行的。 我設置兩個字段dbo.aspnet_Profile(PropertyValuesString,PropertyNames)

UPDATE dbo.aspnet_Profile 
SET 
PropertyValuesString = cast(Replace(cast(PropertyValuesString as nvarchar(max)),'New Value','Old Value') as ntext) 
,PropertyNames='New calculated property names' 
WHERE 
UserId='userID' 

困難的部分是改變PropertyNames field.It包含對配置文件名稱屬性,起始位置和長度。類似的東西:地址:S:31:12 您必須重新計算開始位置和長度相應的新值。