Oprettet ons. d. 30. juni 2010 kl. 13:25:24

kongen72
kongen72 (1.900 point. Point ude: 2.280)

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!

Skrevet ons. d. 30. juni 2010 kl. 13:40:35| #1

keysersoze
keysersoze (306.434 point)
www.soze.dk
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?

Skrevet ons. d. 30. juni 2010 kl. 14:40:41| #2

kongen72
kongen72 (1.900 point)
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?

Skrevet ons. d. 30. juni 2010 kl. 15:30:05| #3

keysersoze
keysersoze (306.434 point)
www.soze.dk
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.

Skrevet ons. d. 30. juni 2010 kl. 15:47:12| #4

kongen72
kongen72 (1.900 point)
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?

Skrevet ons. d. 30. juni 2010 kl. 15:55:12| #5

keysersoze
keysersoze (306.434 point)
www.soze.dk
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?

Skrevet ons. d. 30. juni 2010 kl. 16:45:25| #6

kongen72
kongen72 (1.900 point)
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?

Skrevet ons. d. 30. juni 2010 kl. 17:37:11| #7

keysersoze
keysersoze (306.434 point)
www.soze.dk
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.

Skrevet ons. d. 30. juni 2010 kl. 18:37:47| #8

kongen72
kongen72 (1.900 point)
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??

Skrevet ons. d. 30. juni 2010 kl. 18:52:50| #9

keysersoze
keysersoze (306.434 point)
www.soze.dk
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

Skrevet ons. d. 30. juni 2010 kl. 20:36:04| #10

kongen72
kongen72 (1.900 point)
ok.. nu får jeg vist UserID, -men hvordan får jeg forbundet UserID med min tabel ProfilData? så jeg kan hente oplysninger ud.

Skrevet ons. d. 30. juni 2010 kl. 21:13:59| #11

keysersoze
keysersoze (306.434 point)
www.soze.dk
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.

Skrevet ons. d. 30. juni 2010 kl. 21:38:58| #12

kongen72
kongen72 (1.900 point)
kan du give et lille ekspempel?

Skrevet ons. d. 30. juni 2010 kl. 21:47:22| #13

keysersoze
keysersoze (306.434 point)
www.soze.dk
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?

Skrevet ons. d. 30. juni 2010 kl. 22:46:00| #14

kongen72
kongen72 (1.900 point)
ja selvfølgelig!, er i tvivl om hvordan jeg får det sat sammen i min resterende kode - #1

Skrevet ons. d. 30. juni 2010 kl. 22:59:52| #15

keysersoze
keysersoze (306.434 point)
www.soze.dk
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);

Skrevet ons. d. 30. juni 2010 kl. 23:21:23| #16

kongen72
kongen72 (1.900 point)
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?

Skrevet tor. d. 01. juli 2010 kl. 07:38:39| #17

keysersoze
keysersoze (306.434 point)
www.soze.dk
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.

Skrevet tor. d. 01. juli 2010 kl. 12:22:08| #18

kongen72
kongen72 (1.900 point)
Der må jeg sq nok os have et lille eksempel :-/

Skrevet tor. d. 01. juli 2010 kl. 12:55:11| #19

keysersoze
keysersoze (306.434 point)
www.soze.dk
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.

Skrevet man. d. 05. juli 2010 kl. 17:51:53| #20

kongen72
kongen72 (1.900 point)
Hey! fik det til at virke med Profile providers i stedet for. -Du smider bare et svar ;-)

Skrevet man. d. 05. juli 2010 kl. 17:59:56| #21

keysersoze
keysersoze (306.434 point)
www.soze.dk
Det var godt at høre :)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Login controller med eksisterende database

Oprettet den 26. januar 2012 kl. 10.37
faran giver 60 point for svar | Giv et svar »

Session og klient

Oprettet den 24. januar 2012 kl. 09.49
badal giver 30 point for svar | Giv et svar »

Få vist billeder via sti i XML fil

Oprettet den 15. januar 2012 kl. 16.09
Counx giver 100 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger