Avatar billede kongen72 Nybegynder
30. juni 2010 - 13:25 Der er 20 kommentarer og
1 løsning

Redigere profiler

Hej

Når en bruger er logget ind skal han kunne redigere i hans profil-oplysninger.

Men ved ikke helt hvordan jeg skal få fat i brugerens - profilID fra tabellen "Profiler", hvor alle oplysninger ligger i.


Har gjort følgende før med Querystring, men det kan jeg ikke bruge nu, da der ikke er noget ID at hente i min querystring. Så er lidt LOST!

DataTable dtEdit = profiler.GetDataByID(Convert.ToInt32(Request.QueryString["ProfilID"]));
            if (dtEdit.Rows.Count == 1)
            {
                txtCity.Text = dtEdit.Rows[0]["City"].ToString();
                txtAge.Text = dtEdit.Rows[0]["Age"].ToString();

osv..



Hvordan kan jeg ellers få fat i ProfilID!?

Tak på forhånd!
Avatar billede keysersoze Guru
30. juni 2010 - 13:40 #1
Du kan få fat i det der hvor du har det gemt - og det kan vi ikke se ud fra ovenstående oplysninger. Måske du har det gemt i en Session?
Avatar billede kongen72 Nybegynder
30. juni 2010 - 14:40 #2
Sådan har jeg gemt mine oplysninger.


            MembershipUser newUser = Membership.CreateUser(txtUsername.Text, txtPassword.Text, txtEmail.Text);
           
profiler.InsertData(txtUsername.Text, txtCity, txtAge.Text osv..);
            FormsAuthentication.SetAuthCookie(txtUsername.Text, false);


Hvordan kan jeg så hente mit ProfilID ud?
Avatar billede keysersoze Guru
30. juni 2010 - 15:30 #3
hvis du kigger på Page.User.Identity.Name eller HttpContext.Current.User.Identity.Name burde du kunne finde de oplysninger du skal bruge for at skaffe den indloggede bruger.
Avatar billede kongen72 Nybegynder
30. juni 2010 - 15:47 #4
ja det ved jeg godt..

-men skal have kolonne ID'et fra tabellen "Profil", så brugerne kan redigere deres profiler..

Hvordan finder jeg kolonne ID'et til den indloggede bruger?
Avatar billede keysersoze Guru
30. juni 2010 - 15:55 #5
Hvis der ikke ligger oplysninger nok på Identity burde du kunne benytte de færdige metoder fra membershipprovideren til at hive din bruger frem, fx GetUser. Eller er du i gang med at lave en custom membershipprovider siden du ikke kan benytte de indbyggede metoder?
Avatar billede kongen72 Nybegynder
30. juni 2010 - 16:45 #6
Skal man bruge membershipprovider, når jeg skal kunne redigere i min tabel "ProfilData". Som indeholder personlige data, som alder, by og land.?

Er membershipprovider ikke kun redigering af username, password og email ? Eller er det helt forkert?
Avatar billede keysersoze Guru
30. juni 2010 - 17:37 #7
Ikke nødvendigvis - det vil netop kræve en custom ombygning af membershipprovideren. Men benytter du membershipprovideren som den er og så bare har ekstra egen kode ved siden af må du vel på en eller anden måde have en connection mellem en membershipuser og dine tabeller og det er vel også derfor du i #2 henviser til en membershipuser - i så fald vil ProviderUserKey på MembershipUser vel være den rigtige nøgle.
Avatar billede kongen72 Nybegynder
30. juni 2010 - 18:37 #8
Har username i ProfilData tabellen som jeg har forbundet sammen med aspnet_Users.

Kan du give et lille eksempel på hvordan koden evt. kunne se ud med providerUserKey??
Avatar billede keysersoze Guru
30. juni 2010 - 18:52 #9
Hvis en bruger kan skifte username er det ikke et så heldigt valg som nøgle - provideruserkey er den unikke nøgle for brugeren. Hvis brugeren er logget ind får du fat i den sådan;

Membership.GetUser().ProviderUserKey
Avatar billede kongen72 Nybegynder
30. juni 2010 - 20:36 #10
ok.. nu får jeg vist UserID, -men hvordan får jeg forbundet UserID med min tabel ProfilData? så jeg kan hente oplysninger ud.
Avatar billede keysersoze Guru
30. juni 2010 - 21:13 #11
lav en guid-kolonne og gem provideruserkey deri - og når du så skal hente data for brugeren kan du i din SQL/LINQ/whatever benytte Membership.GetUser().ProviderUserKey op imod din kolonne til at sammenligne.
Avatar billede kongen72 Nybegynder
30. juni 2010 - 21:38 #12
kan du give et lille ekspempel?
Avatar billede keysersoze Guru
30. juni 2010 - 21:47 #13
Der findes utallige måder at løse dette på og det hele er meget afhængig af dit setup - det nytter fx ikke det store at jeg giver en SQL-string hvis du arbejder med Entity Framework osv.

Hvad er du i tvivl om?
Avatar billede kongen72 Nybegynder
30. juni 2010 - 22:46 #14
ja selvfølgelig!, er i tvivl om hvordan jeg får det sat sammen i min resterende kode - #1
Avatar billede keysersoze Guru
30. juni 2010 - 22:59 #15
Jeg ved ikke hvad "profiler" er for et objekt og derfor ikke hvilke metoder der ligger under - men ligger der en til guid så;

DataTable dtEdit = profiler.GetDataByGUID(Membership.GetUser().ProviderUserKey);
Avatar billede kongen72 Nybegynder
30. juni 2010 - 23:21 #16
takker! profiler er min tabel med profil-oplysningerne i! Har en DAL - GetDataByID er min query som jeg selv har oprettet!

Skal GetDataByGUID se således ud:
SELECT * FROM Profiler WHERE (ProfilID = @ProfilID) ? Eller er det UserName i stedet for ProfilID?
Avatar billede keysersoze Guru
01. juli 2010 - 07:38 #17
jeg kender ikke dine tabel eller variabelnavne - men username skal du i hvert fald ikke bruge når nu vi taler nøgler. hvis ProfilID er kolonnen du kommer membershipuser-guid i og @ProdilID er den parameter du sætter variablen i så ser det fint ud.
Avatar billede kongen72 Nybegynder
01. juli 2010 - 12:22 #18
Der må jeg sq nok os have et lille eksempel :-/
Avatar billede keysersoze Guru
01. juli 2010 - 12:55 #19
på hvad? Jeg tror det er lettest hvis du kommer med den kode du allerede har og fortæller hvor det ikke virker - hvis din GetDataByID-metode fungerer er der stort set ingen forskelle i forhold til hvordan GetDataByGUID skal se ud, kun at du skal håndtere en guid frem for en int.
Avatar billede kongen72 Nybegynder
05. juli 2010 - 17:51 #20
Hey! fik det til at virke med Profile providers i stedet for. -Du smider bare et svar ;-)
Avatar billede keysersoze Guru
05. juli 2010 - 17:59 #21
Det var godt at høre :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester