2011-09-20 38 views
0

我想更新我的项目中的用户帐户。我有这样一个观点:ASP.Net MVC 3如何更新用户帐户?

@using (Html.BeginForm("edit/" + @Model.SysUsers[0].UserID, "cpanel/sysuser", 
FormMethod.Post)) 
{ 
@Html.ValidationSummary(true) 
<fieldset> 
    <legend>@Model.SysUsers[0].UserID</legend> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.SysUsers[0].UserName) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.SysUsers[0].UserName) 
     @Html.ValidationMessageFor(model => model.SysUsers[0].UserName) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.SysUsers[0].UserEmail) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.SysUsers[0].UserEmail) 
     @Html.ValidationMessageFor(model => model.SysUsers[0].UserEmail) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.SysUsers[0].UserComment) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.SysUsers[0].UserComment) 
     @Html.ValidationMessageFor(model => model.SysUsers[0].UserComment) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.SysUsers[0].UserLocked) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.SysUsers[0].UserLocked) 
     @Html.ValidationMessageFor(model => model.SysUsers[0].UserLocked) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.SysUsers[0].UserApproved) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.SysUsers[0].UserApproved) 
     @Html.ValidationMessageFor(model => model.SysUsers[0].UserApproved) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.SysUsers[0].UserOffice) 
    </div> 
    <div class="editor-field"> 
     @Html.DropDownListFor(model => model.SysUsers[0].UserOffice, new 
     SelectList(Model.GetawayOffice, "OfficeCode", "OfficeDesc", 
     Model.SysUsers[0].UserOffice)) 
     @Html.ValidationMessageFor(model => model.SysUsers[0].UserOffice) 
    </div> 
    <p> 
     <input type="submit" value="Save" /> 
    </p> 
</fieldset> 
} 

和控制器是这样的:

public ActionResult Edit(string id) 
    { 
     model.SysUsers = repo.SelectSystemUser(id).ToList(); 
     model.Office = reps.Office().ToList(); 

     return View(model); 
    } 
[HttpPost] 
    public ActionResult Edit(string id, FormCollection collection) 
    { 
     //update in System_User Table 
     Guid UserId = new Guid(id.ToString()); 
     var SysUser = db.System_User.Single(s => s.User_UserId == UserId); 
     SysUser.User_Office = collection["SysUsers[0].UserOffice"]; 

     //update aspnet_membership, like comment, email, isLocked, isApproved 
     ... 
    } 

我可以在Sytem_User表更新Office,但我怎么可以更新aspnet_membership(其updting评论,电子邮件, isLocked,isApproved)?

我认为我必须使用

membership.UpdateUser(MembershipUser User) 

,但有人可以给我一个例子,如何使用membership.UpdateUser?

现在我可以更新用户的评论和用户的电子邮件,我用这个:

var usermembership = Membership.GetUser(UserId); 

usermembership.Comment = collection["SysUsers[0].UserComment"]; 
Membership.UpdateUser(usermembership); 

usermembership.Email = collection["SysUsers[0].UserEmail"]; 
Membership.UpdateUser(usermembership); 

但是,我不能更新用户锁定和用户认可。如何更新thoose?

谢谢

回答

2

Membership.UpdateUser Method

更新数据库与信息为指定的用户。

MembershipUser u = Membership.GetUser(User.Identity.Name); 
u.Email = someValue; 
Membership.UpdateUser(u); 
+0

谢谢CD ..现在我可以更新用户评论和用户电子邮件,我喜欢这样使用 –

0

看一看的ASP.Net MVC 3 Membership.UpdateUser(MembershipUser user)

http://msdn.microsoft.com/en-us/library/system.web.security.membership.updateuser.aspx

可能欺骗 - 我认为你是在正确的轨道上。也许可以看看使用成员身份的应用程序的示例。

这里我使用的WebForms更改密码:

 user = Membership.GetUser(txtUsername.Text); 
     string generatedPassword = user.ResetPassword(); 
     user.ChangePassword(generatedPassword, txtPassword.Text); 

好运。

0

我认为一种方法是编写onw membershipuser实现。

看这个帖子"How to: Implement a Custom Membership User"

如果你不喜欢落实每一个你可以创建一个子类,并只写你需要不同的表现方法的方法,然后宣布新的供应商在web.config