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
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
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
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
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
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
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
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
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
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
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
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
kan du give et lille ekspempel?
Skrevet ons. d. 30. juni 2010 kl. 21:47:22| #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?
Skrevet ons. d. 30. juni 2010 kl. 22:46:00| #14
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
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
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
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
Der må jeg sq nok os have et lille eksempel :-/
Skrevet tor. d. 01. juli 2010 kl. 12:55:11| #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.
Skrevet man. d. 05. juli 2010 kl. 17:51:53| #20
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