문제

나는 최근 에이 질문을 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);
    }
.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top