Có một vài cách để da mèo này, nhưng tôi muốn lập luận rằng gắn thông tin hồ sơ cho người sử dụng sẽ là nhất thanh lịch.
Bạn sẽ cần một Nhà cung cấp hồ sơ sẽ duy trì dữ liệu hồ sơ của người dùng của bạn. Bạn có thể sử dụng SqlProfileProvider cho SQL Server, nhưng tôi khuyên bạn nên xem xét các nhà cung cấp Microsoft ASP.NET Universal ref: http://www.nuget.org/packages/Microsoft.AspNet.Providers
Một số bản sao không được dán và dán từ Scott Hanselman theo sau. Hãy nói rằng bạn muốn theo dõi ngày sinh nhật của người dùng:
public class MyCustomProfile : ProfileBase
{
public DateTime? Birthdate {
get { return this["Birthdate"] as DateTime?; }
set { this["Birthdate"] = value; }
}
}
Sau đó, bạn muốn thiết lập nó trong web.config của bạn:
<profile inherits="MyApp.Models.MyCustomProfile" defaultprovider="DefaultProfileProvider"></profile>
Cuối cùng, bạn có thể kéo trong hồ sơ cá nhân tùy chỉnh của người sử dụng hiện tại với:
var customProfile = HttpContext.Profile as MyCustomProfile;
DateTime? birthday = customProfile.Birthdate;
Bạn sẽ phải thiết lập cửa hàng dữ liệu, nhưng đó là những gì cần phải làm. Bạn có thể tìm thấy toàn bộ bài viết của mình tại blog của Scott Hanselman: http://www.hanselman.com/blog/IntroducingSystemWebProvidersASPNETUniversalProvidersForSessionMembershipRolesAndUserProfileOnSQLCompactAndSQLAzure.aspx
Nguồn
2013-08-29 12:18:56
** [Kiểm tra bài đăng này. Có thể bạn thấy điều này hữu ích] (http://stackoverflow.com/a/17199709/2015869) ** –
Cảm ơn bạn đã nhập. Nhưng tôi đọc ở đâu đó rằng "TempData có nghĩa là một ví dụ rất ngắn ngủi, và bạn chỉ nên sử dụng nó trong thời gian hiện tại và các yêu cầu tiếp theo mà thôi." Có cách nào để duy trì dữ liệu trên một phiên người dùng cụ thể không? –
Bạn có đang sử dụng xác thực cửa sổ hoặc xác thực biểu mẫu không? Bạn có một cơ sở dữ liệu? –