Membership.Updateuser 并未真正更新数据库
我目前正在为我的 Web 应用程序开发一个会员系统,该系统基于框架的表单身份验证。
我使用集成工具创建了一些用户,并且登录工作正常。但现在我想做的是赋予管理员创建、修改、删除用户的能力。
所以这就是我现在得到的:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim muc As MembershipUserCollection = Membership.GetAllUsers()
ComboBox1.DataSource = muc
ComboBox1.DataValueField = "UserName"
ComboBox1.DataTextField = "UserName"
ComboBox1.DataBind()
End Sub
Protected Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim userName As String = ComboBox1.SelectedValue
Dim mu As MembershipUser = Membership.GetUser(userName)
Dim userRoles As String() = Roles.GetRolesForUser(userName)
tbComments.Text = mu.Comment
tbEmail.Text = mu.Email
lblUserName.Text = mu.UserName
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim userName As String = ComboBox1.SelectedValue
Dim mu As MembershipUser = Membership.GetUser(userName)
If Not mu Is Nothing Then
Try
mu.Comment = tbComments.Text
Membership.UpdateUser(mu)
mu.Email = tbEmail.Text
Membership.UpdateUser(mu)
mu.IsApproved = True
Membership.UpdateUser(mu)
mu = Nothing
Catch ex As Exception
Console.WriteLine(ex.ToString())
End Try
End If
DetailPanel.Visible = False
End Sub
问题是数据库中的记录似乎没有更新。 在阅读 此博客条目,但它没有改变任何内容。
我在调试时注意到的一件奇怪的事情是,当我输入 Button1_Click
方法时,Membership.GetUser(userName)
返回我之前尝试的值!我真的不明白我错过了什么。
有人有线索吗?
提前致谢 !
I'm currently working on a membership system for my web application, which is based on forms authentication from the framework.
I created some users with the integrated tool, and the login is perfectly working. But now what I want to do is to give administrator the capability to create, modify, delete users.
So here is what I've got right now:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim muc As MembershipUserCollection = Membership.GetAllUsers()
ComboBox1.DataSource = muc
ComboBox1.DataValueField = "UserName"
ComboBox1.DataTextField = "UserName"
ComboBox1.DataBind()
End Sub
Protected Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ComboBox1.SelectedIndexChanged
Dim userName As String = ComboBox1.SelectedValue
Dim mu As MembershipUser = Membership.GetUser(userName)
Dim userRoles As String() = Roles.GetRolesForUser(userName)
tbComments.Text = mu.Comment
tbEmail.Text = mu.Email
lblUserName.Text = mu.UserName
End Sub
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Dim userName As String = ComboBox1.SelectedValue
Dim mu As MembershipUser = Membership.GetUser(userName)
If Not mu Is Nothing Then
Try
mu.Comment = tbComments.Text
Membership.UpdateUser(mu)
mu.Email = tbEmail.Text
Membership.UpdateUser(mu)
mu.IsApproved = True
Membership.UpdateUser(mu)
mu = Nothing
Catch ex As Exception
Console.WriteLine(ex.ToString())
End Try
End If
DetailPanel.Visible = False
End Sub
The problem is that the record doesn't seem to be updated in the database.
I made the multiple calls to Membership.UpdateUser
after reading this blog entry, but it didn't change anything.
A strange thing I noticed while debugging, is that when I enter the Button1_Click
method, Membership.GetUser(userName)
returns me values from my precedent attempt ! I don't really understand what I'm missing.
Does someone have a clue ?
Thanks in advance !
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
第一:
您引用的博客条目错误。
这是您正在调用的方法,如果您看到需要多次调用它才能更新多个属性的指示,请告诉我:
第二:
您每次回发都会重新绑定列表。这只需要完成一次,并且列表存储在视图状态中。
这是一个有效的实现:
UpdateUser.aspx
First:
The blog entry you cite is just wrong.
Here is the method you are calling, tell me if you see an indication that it needs to be called multiple times to update multiple properties:
Second:
You are rebinding your list every postback. This needs to be done only once and the list is stored in viewstate.
Here is a working implementation:
UpdateUser.aspx