2011-09-20 48 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