Вставьте генерируемый членством asp.net UserId в пользовательскую таблицу (vb) - PullRequest
1 голос
/ 18 ноября 2010

Я потратил пару часов, пытаясь найти ответ на этот вопрос, и хотя по всей сети есть учебники, ни один из них не работает для меня (или я слишком неуверен, чтобы понять, что они говорят мне. ..)

Во всяком случае, я создаю пользователей в asp.net, используя членство. Я хочу добавить сгенерированный UserId в столбец созданной мной пользовательской таблицы, чтобы связать материал пользовательской таблицы с пользователем, созданным в aspnet_Users.

Вот код, который я получил для кнопки отправки регистрации:

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

Как видите, я пытаюсь получить сгенерированный Членством идентификатор пользователя и вставить его в таблицу клиентов. Я пробовал множество подходов к захвату UserId, но ни один из них не работает.

Членство работает для создания пользователя, это просто часть, на которой я застрял.

Любая помощь будет высоко ценится:)

Ответы [ 2 ]

1 голос
/ 19 ноября 2010

В конце концов мне это удалось, используя этот код:

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

... где username.Text - содержимое ввода формы имени пользователя, где пользователь выбирает свое имя пользователя.

Соответствующая строка параметров такова:

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

Я получаю предупреждение о том, что используемый мной метод устарел, но он работает по крайней мере!

0 голосов
/ 18 ноября 2010

Membership.CreateUser возвращает объект MembershipUser. Вы можете получить UserId из этого возвращенного объекта.

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