ASP.Net MVC 3 как обновить учетную запись пользователя? - PullRequest
0 голосов
/ 20 сентября 2011

Я хочу обновить учетную запись пользователя в моем проекте.у меня есть такое представление:

@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
        ...
    }

я могу обновить Office в таблице Sytem_User, но как я могу обновить aspnet_membership (его для обновлениякомментарий, электронная почта, isLocked, isApproved)?

Я думаю, что я должен использовать

membership.UpdateUser(MembershipUser User)

, но может ли кто-нибудь дать мне пример, как использовать членство.UpdateUser?

Теперь я могу обновить комментарий пользователя и электронную почту пользователя., я использую это:

 var usermembership = Membership.GetUser(UserId);

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

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

, но я не могу обновить пользователя заблокирован и пользователь одобряет.как обновить тус?

спасибо

Ответы [ 3 ]

2 голосов
/ 20 сентября 2011

Membership.UpdateUser Method

Обновляет базу данных информацией для указанного пользователя.

MembershipUser u = Membership.GetUser(User.Identity.Name);
u.Email = someValue;
Membership.UpdateUser(u);
0 голосов
/ 20 сентября 2011

Я думаю, что был бы способ написать вашу реализацию onw membersuser.

Посмотрите на этот пост "Как: реализовать пользователя с пользовательским членством" .

Если вам не нравится реализовывать каждый метод, вы можете создать класс-потомок и написать только те методы, которые вам нужны, чтобы вести себя по-другому, а затем объявите вашего нового поставщика в файле web.config

0 голосов
/ 20 сентября 2011

Посмотрите на http://msdn.microsoft.com/en-us/library/system.web.security.membership.updateuser.aspx

Возможное дублирование ASP.Net MVC 3 Membership.UpdateUser (пользователь MembershipUser)

Хм - я думаю, вы на правильном пути. Возможно, посмотрите на примеры приложений, которые используют членство.

Здесь я использую WebForms для смены пароля:

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

Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...