Permalänk
Medlem

asp.net CreateUserWizard

Jag håller på för fullt med att lära mig ASP.NET vilket går skapligt.
Det jag håller på att skapa är en enkel gästbok. Jag vet hur man använder CreateUserWizard och Login-kontroll, men jag undrar om det finns något bra sätt för att endast tillåta registrerade användare att göra inlägg? Som det är nu kan man logga in med ett namn och skriva med ett annat.

Tacksam för hjälp med detta!

Permalänk
Medlem

Beror ju på hur du hanterar användarna, men typ detta tänket funkar:

if(användare.inloggad()) { //Visa kommentarfunktionen samt sätt användarens namn i "namn rutan". commentbox.Visible = true; txtNamn.Text = användare.Namn; txtNamn.Enabled = false; } else { //Visa inloggningsruta loginbox.Visible = true; commentbox.Visible = false; }

Psudokod, men borde väl vara nåt åt det hållet du är ute efter

Visa signatur

...

Permalänk
Medlem

Det är nog precis vad jag är ute efter! Du råkar inte ha nåt tips på nån sida som förklarar det på ett bra sätt? Är ganska ny på området än, så är inte säker på att jag kan sätta in det i sammanhanget.

Permalänk
Medlem

Ta en titt på http://msdn.microsoft.com
Där har du en bunt med tutorials och annat läsvärt

Visa signatur

...

Permalänk
Medlem

Tack för hjälpen! Har kommit en bit på vägen, men har stött på ett nytt problem.
Jag använder mig av LoginName, dels för att visa användaren att den är inloggad ex. "Välkommen, [användare]" och sedan för att visa vem som skrivit en kommentar.

Problemet är att om det finns en kommentar i gästboken, så ändras den avsändaren till den som är inloggad. Vad gör jag för fel?

Permalänk
Medlem

Ja LoginName hämtar ju namnet för den inloggade användaren.

Det du får göra är ju att hämta namnet på författaren av inlägget.
Och hur du gör detta beror ju såklart helt på hur du har programmerat ditt system.
Ett fult exempel på hur det skulle kunna gå till:

Foreach(CommentBusiness _comment in CommentCollection.GetComments()) { ltlComment.Text = _comment.Message; ltlAuthor.Text = _comment.AuthorName; }

Databasstrukturen skulle kunna se ut enligt följande:

Users
-----
userID
userName
password

Comments
----
commentID
userID
message
date

Visa signatur

...

Permalänk
Medlem

Hm, jag använder en xml-fil i stället för en databas, det är det sättet jag lärt mig hittills så jag kör på det tills vidare
Koden för DataListen som sköter inläggen ser ut såhär (om det säger något):

<table style="width: 800px;"> <tr><td>Meddelande: <%#XPath("text")%></td></tr> <tr><td>Postat av <asp:LoginName ID="LoginName2" runat="server" /> (<%#XPath("email")%>)</tr> </table>

Permalänk
Medlem

Bör vara:

<table style="width: 800px;"> <tr> <td>Meddelande: <%#XPath("text")%></td> </tr> <tr> <td>Postat av <%#XPath("user")%> (<%#XPath("email")%>)</tr> </table>

Visa signatur

...

Permalänk
Medlem

Ser ut som att det bör vara så men jag lyckas inte få till det. Min .cs-kod ser ut såhär:

stream.WriteLine("<comment>"); stream.WriteLine("<name>" + txtName.Text + "</name>"); stream.WriteLine("<email>" + txtEmail.Text + "</email>"); stream.WriteLine("<text>" + txtComment.Text + "</text>"); stream.WriteLine("</comment>"); foreach (var item in comments) { stream.WriteLine("<comment>"); stream.WriteLine("<name>" + item.Descendants("name").First().Value + "</name>"); stream.WriteLine("<email>" + item.Descendants("email").First().Value + "</email>"); stream.WriteLine("<text>" + item.Descendants("text").First().Value + "</text>"); stream.WriteLine("</comment>");

txtName är en textbox som inte ska vara kvar eftersom jag vill få namnet automatiskt på den som är inloggad, men jag begriper inte vad jag kan skriva i stället? Känns som jag är väldigt nära och frustrationen stiger...