Domanda

Recentemente ho chiesto a questa domanda Come mantenere anon selezione dell'utente (es:la selezione del tema).e iniziò a imparare ASP.NET i profili e le loro proprietà nel web config.Ho cercato la risposta dal link, ma non mi è stato possibile profilo di accesso.newproperty

Come assegnare i valori di Profilo? Questa domanda specifica sul web, le applicazioni non supportano il profilo di fuori della scatola e un modello personalizzato basato su ProfileBase deve essere creato.La domanda è stato risposto nel 2009 e volevo sapere se questo è ancora il caso stesso.

In un ASP.NET 4.0 applicazione web in grado di accedere al profilo.newproperty con una proprietà che ho definito nella sezione web.config senza bisogno di codice di C#, tranne quando si accede.

È stato utile?

Soluzione

Ho appena visto la tua domanda, sì, hai ragione, la risposta che ho postato è stato relative ai siti web e, di conseguenza, non funziona con le Applicazioni Web o MVC

Qui vi mostrerò codice per lavorare con profili in MVC utilizzando anonimo e profili utente autenticato

Uscita

Utente anonimo - No un profilo di sicurezza

enter image description here

Utente anonimo - set

enter image description here

Utente autenticato, il profilo di migrazione

enter image description here

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 classe

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;
    }
}

Home controller

    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");
    }

Indice di visualizzazione

@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" />
}

E infine, quando si è un utente anonimo si può avere il proprio profilo tuttavia, una volta registrati al sito, è necessario la migrazione il profilo di corrente per essere usato con il tuo nuovo account.Questo è perché ASP.Net di appartenenza, crea un nuovo profilo utente quando un utente fa il log-in

Globale.asax, il codice di migrare i profili

    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);
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top