MVC 웹 응용 프로그램에서 프로파일에 액세스합니다
-
13-12-2019 - |
문제
나는 최근 에이 질문을 Anon 사용자 선택을 지속하는 방법(예 : 테마 선택) .Web Config에서 ASP.NET 프로파일 및 해당 속성에 대해 알아보십시오.나는 링크에서 대답을 시도했지만 프로필에 액세스 할 수 없었습니다 .NewProperty
프로필 값을 할당하는 방법 이 질문은 웹 응용 프로그램이 상자에서 프로필을 지원하지 않으며 프로파일베이스를 기반으로하는 사용자 정의 모델을 작성하도록 지정합니다.질문은 2009 년에 답변을 받았고 이것이 여전히 같은 경우인지 알고 싶었습니다.
ASP.NET 4.0 웹 응용 프로그램에서는 Web.config의 섹션에서 정의한 속성에 액세스 할 수 있습니다.
해결책
방금 귀하의 질문을 보았습니다. 예, 내가 게시 한 대답은 웹 사이트와 관련이 있으므로 웹 응용 프로그램이나 MVC에서는 작동하지 않습니다
여기에서는 익명 및 인증 된 사용자 프로필을 사용하여 MVC에서 프로파일을 사용하여 코드를 보여 드리겠습니다.
출력
익명 사용자 - 아직 프로필 세트 없음
익명 사용자 - 프로필 세트
인증 된 사용자 - 프로파일 이주
web.config
<anonymousIdentification enabled="true"/>
<profile inherits="ProfileInWebApplicationMVC1.UserProfile">
<providers>
<clear/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
</providers>
</profile>
.
userprofile 클래스
public class UserProfile : ProfileBase
{
public static UserProfile GetProfile()
{
return HttpContext.Current.Profile as UserProfile;
}
[SettingsAllowAnonymous(true)]
public DateTime? LastVisit
{
get { return base["LastVisit"] as DateTime?; }
set { base["LastVisit"] = value; }
}
public static UserProfile GetProfile(string userID)
{
return ProfileBase.Create(userID) as UserProfile;
}
}
.
홈 컨트롤러
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
var p = UserProfile.GetProfile();
return View(p.LastVisit);
}
[HttpPost]
public ActionResult SaveProfile()
{
var p = UserProfile.GetProfile();
p.LastVisit = DateTime.Now;
p.Save();
return RedirectToAction("Index");
}
.
인덱스보기
@if (!this.Model.HasValue)
{
@: No profile detected
}
else
{
@this.Model.Value.ToString()
}
@using (Html.BeginForm("SaveProfile", "Home"))
{
<input type="submit" name="name" value="Save profile" />
}
.
그리고 마지막으로, 익명 사용자 를 할 때 자신의 프로필을 가질 수 있습니다 은 사이트에 등록하면 마이그레이션 현재 프로필이 있어야합니다. 귀하의 새 계정에 사용됩니다. 이는 ASP.NET 회원 자격이 사용자가 로그인 할 때 새 프로파일을 만듭니다
global.asax, 코드를 이주하는 코드
public void Profile_OnMigrateAnonymous(object sender, ProfileMigrateEventArgs args)
{
var anonymousProfile = UserProfile.GetProfile(args.AnonymousID);
var f = UserProfile.GetProfile(); // current logged in user profile
if (anonymousProfile.LastVisit.HasValue)
{
f.LastVisit = anonymousProfile.LastVisit;
f.Save();
}
ProfileManager.DeleteProfile(args.AnonymousID);
AnonymousIdentificationModule.ClearAnonymousIdentifier();
Membership.DeleteUser(args.AnonymousID, true);
}
. 제휴하지 않습니다 StackOverflow