locked
Relier la base ASPNETDB avec une personnelle pour les profiles RRS feed

  • Question

  • Bonjour à toutes et à tous,

    j'utilise la DB ASPNETDB.mdf pour mes comptes utilisateurs (celle fournie par défault dans le framework).
    A coté, j'ai créer une database qui contient une table "profile" avec d'autres informations. il y a dedans un id qui doit me relier à l'utilisateur dans ASPNETDB.


    Comment puis-je faire, dans mon AccountController.cs pour créer mes méthodes d'édition du profile afin qu'il prennent les bonnes informations dans ma table "profile" si l'id_user est égal à userID dans ASPNETDB?

     

    Si il existe un meilleur moyen, je suis prenneur !

     

    D'avance je vous remercie.

    Byannick

    vendredi 12 novembre 2010 01:09

Réponses

  • Bonjour,

    Il n'existe pas de méthode CreateProfile(). Pour associer des informations sur le profil de l'utilisateur actuellement authentifié, utilisez la propriété :

    HttpContext.Current.Profile
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCPD Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5 - MCTS ADO .NET 3.5 / SQL Server 2008 Developper - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    • Marqué comme réponse kiwi-ch dimanche 14 novembre 2010 15:50
    samedi 13 novembre 2010 22:44
    Modérateur

Toutes les réponses

  • Bonjour,

    Pourquoi ne pas utiliser l'API de gestion des profiles d'ASP .NET (celui-ci peut s'intégrer dans la base de données ASPNETDB.) : http://msdn.microsoft.com/en-us/library/2y3fs9xs.aspx

    Cordialement


    Gilles TOURREAU - MVP C# - MCPD Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5 - MCTS ADO .NET 3.5 / SQL Server 2008 Developper - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    vendredi 12 novembre 2010 12:55
    Modérateur
  • Bonjour,

     

    Ainsi les lignes suivantes sont correcte:

    <profile>
       <properties>
        <group name="Identité">
         <add name="Nom"/>
         <add name="Prénom"/>
         <add name="Sexe"/>
         <add name="Année de naissance" type="System.DateTime"/>
         <add name="Status sentimental"/>
         <add name="Originaire de"/>
         <add name="Photo" />
        </group>
    ....
       </properties>
       <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
       </providers>
      </profile>
    

    et AccountModels.cs:

      #region Models
    
      public class userIdentity : ProfileBase
      {
        [Required]
        [SettingsAllowAnonymous(false)]
        [ProfileProvider("AspNetSqlProfileProvider")]
        [Display(Name = "Nom")]
        public string Nom
        {
          get { return base["Nom"].ToString(); }
          set { base["Nom"] = value; }
        }
    
        [Required]
        [SettingsAllowAnonymous(false)]
        [ProfileProvider("AspNetSqlProfileProvider")]
        [Display(Name = "Prénom")]
        public string Prenom
        {
          get { return base["Prénom"].ToString(); }
          set { base["Prénom"] = value; }
        }
    
        [Required]
        [SettingsAllowAnonymous(false)]
        [ProfileProvider("AspNetSqlProfileProvider")]
        [Display(Name = "Sexe")]
        public string Sexe
        {
          get { return base["Sexe"].ToString(); }
          set { base["Sexe"] = value; }
        }
    
        [Required]
        [SettingsAllowAnonymous(false)]
        [ProfileProvider("AspNetSqlProfileProvider")]
        [Display(Name = "Année de naissance")]
        public DateTime Anniversaire
        {
          get { return (DateTime)base["Année de naissance"]; }
          set { base["Année de naissanc"] = value; }
        }
    
        [SettingsAllowAnonymous(false)]
        [ProfileProvider("AspNetSqlProfileProvider")]
        [Display(Name = "Status sentimentale")]
        public string Status
        {
          get { return base["Status sentimental"].ToString(); }
          set { base["Status sentimental"] = value; }
        }
    
        [SettingsAllowAnonymous(false)]
        [ProfileProvider("AspNetSqlProfileProvider")]
        [Display(Name = "Originaire de")]
        public string Origine
        {
          get { return base["Originaire de"].ToString(); }
          set { base["Originaire de"] = value; }
        }
    
        [SettingsAllowAnonymous(false)]
        [ProfileProvider("AspNetSqlProfileProvider")]
        [Display(Name = "Photo profil")]
        public string Photo
        {
          get { return base["Photo"].ToString(); }
          set { base["Photo"] = value; }
        }
    
      }
    ...
    

    N'est-ce pas? De ce fait, lorsque la personne ira s'enregistrer, le code

    [HttpPost]
        public ActionResult Register(RegisterModel model)
        {
          if (ModelState.IsValid)
          {
            // Attempt to register the user
            MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email);
    
            if (createStatus == MembershipCreateStatus.Success)
            {
              FormsService.SignIn(model.UserName, false /* createPersistentCookie */);
              return RedirectToAction("Index", "Home");
            }
            else
            {
              ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus));
            }
          }
    
          // If we got this far, something failed, redisplay form
          ViewModel.PasswordLength = MembershipService.MinPasswordLength;
          return View(model);
        }
    

    possédera une autre ligne de ce type:

    MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email);
    
    

    avec toutes mes informations, et en découlera les condition comme ci-dessus. et pareil pour la partie d'edition. Suis-je dans le juste? je ne veux pas m'avancer trop vite et devoir tout revenir en arrière.

     

    Meilleures salutations et merci encore pour votre réponse !

    vendredi 12 novembre 2010 23:31
  • possédera une autre ligne de ce type:

    MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email);
    
    

     

    avec toutes mes informations, et en découlera les condition comme ci-dessus. et pareil pour la partie d'edition. Suis-je dans le juste? je ne veux pas m'avancer trop vite et devoir tout revenir en arrière.

     

    Meilleures salutations et merci encore pour votre réponse !

    Bonjour,

    J'ai du mal à comprendre la fin de votre demande... Pouvez-vous être plus explicite ?

    Cordialement


    Gilles TOURREAU - MVP C# - MCPD Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5 - MCTS ADO .NET 3.5 / SQL Server 2008 Developper - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    samedi 13 novembre 2010 19:09
    Modérateur
  • MembershipCreateStatus createStatus = MembershipService.CreateUser(model.UserName, model.Password, model.Email);
    //Je rajoute
    MembershipCreateStatus profileStatus = Membership.CreateProfile(models.Nom, models.Prenom, models...);
    
    N'est-ce pas?
    samedi 13 novembre 2010 22:21
  • Bonjour,

    Il n'existe pas de méthode CreateProfile(). Pour associer des informations sur le profil de l'utilisateur actuellement authentifié, utilisez la propriété :

    HttpContext.Current.Profile
    

    Cordialement


    Gilles TOURREAU - MVP C# - MCPD Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5 - MCTS ADO .NET 3.5 / SQL Server 2008 Developper - Architecte .NET/Consultant/Formateur - http://gilles.tourreau.fr
    • Marqué comme réponse kiwi-ch dimanche 14 novembre 2010 15:50
    samedi 13 novembre 2010 22:44
    Modérateur