2010-11-18 9 views
1

J'ai passé quelques heures à essayer de trouver la réponse à cette question, et bien qu'il y ait des tutoriels partout sur le net aucun d'eux ne fonctionne pour moi (ou je suis trop nbb pour comprendre ce qu'ils me disent ...)Insérez asp.net UserId généré par l'adhésion dans la table personnalisée (vb)

De toute façon, je crée des utilisateurs dans asp.net en utilisant l'adhésion. Ce que je veux faire est d'ajouter l'UserId généré à une colonne dans une table personnalisée que j'ai créée, pour lier le contenu de la table personnalisée avec l'utilisateur créé dans aspnet_Users.

Voici le code que j'ai pour l'enregistrement bouton d'envoi:

Private Sub submit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles submit.Click 
    Dim connectionString As String = WebConfigurationManager.ConnectionStrings("edinsec").ConnectionString 
    Dim createStatus As MembershipCreateStatus 
    Membership.CreateUser(fname.Text, password.Text, email.Text, sq.Text, sa.Text, False, createStatus) 

    ''#Something has to happen here! 

    Dim insertSQL As String 

    insertSQL = "INSERT INTO clients (UserId)" 
    insertSQL &= "VALUES (@userId)" 
    Using con As New SqlConnection(connectionString) 
    Dim cmd As New SqlCommand(insertSQL, con) 
    cmd.Parameters.AddWithValue("@firstname", firstname.Text) 


    Try 
     Try 
    con.Open() 
     Catch ex As SqlException 
    MsgBox("Connection Problem - Please Retry Later", 65584, "Connection Error") 
     End Try 
     cmd.ExecuteNonQuery() 
     MsgBox("Thank you for joining us - we will be in touch shortly.", 65600, "Join Up") 
     Response.Redirect("Default.aspx") 
    Catch Err As SqlException 
     MsgBox("Error inserting record - please retry later.", 65584, "Insertion Error") 
    End Try 
    con.Close() 
    End Using 
End Sub 

Comme vous pouvez le voir, je suis en train de saisir l'ID utilisateur d'adhésion généré et l'insérer dans la table des clients. J'ai essayé de nombreuses approches pour saisir l'UserId mais aucun ne fonctionne. L'adhésion fonctionne pour créer l'utilisateur, c'est juste la partie par la suite que je suis coincé dessus.

Toute aide serait très apprécié :)

Répondre

1

j'y suis parvenue à la fin en utilisant ce code:

Dim userid As Guid = New Guid(Membership.GetUser(username.Text).ProviderUserKey.ToString()) 

... où username.Text est le contenu de l'entrée sous forme de nom d'utilisateur, où l'utilisateur choisit son nom d'utilisateur.

La ligne de paramètre pertinent est le suivant:

cmd.Parameters.Add("@UserId", g) 

Je reçois un avertissement au sujet de la méthode que je me sers dépréciés, mais il fonctionne au moins!

+0

L'avertissement relatif à l'utilisation de .Add au lieu de .AddWithValue. Après avoir changé cela, il n'y a pas d'avertissement et ça fonctionne toujours bien. – melat0nin

0

Membership.CreateUser retourne un objet MembershipUser. Vous pouvez obtenir l'ID utilisateur de cet objet retourné.

MembershipUser user = Membership.CreateUser(...); 
Guid userId = (Guid)user.ProviderUserKey; 
+0

Je reçois toutes sortes d'erreurs avec ce code ("MembershipUser est un type et ne peut pas être utilisé comme une expression" etc etc). Est-ce VB que vous avez posté? – melat0nin