Entity Framework - Проблемы с обновлением информации о пользователе - PullRequest
0 голосов
/ 27 сентября 2011

Я новичок в Entity Framework, и мне нужно обновить запись в моей базе данных. Я использовал пример «Редактировать», сгенерированный платформой MVC3, и попытался настроить его под свои нужды.

У меня есть поле пароля, и перед тем, как отправить его на обновление, мне нужно зашифровать его с помощью MD5. Все процессы выполняются нормально, кроме db.SaveChanges (); это сохраняет данные, размещенные в форме. Не имеет значения, пытаюсь ли я изменить пароль, фреймворк просто игнорирует это и сохраняет данные в том виде, в котором они были опубликованы в форме.

Мой файл .cshtml:

<div class="editor-label">
    @Html.Label("password", "Senha")
</div>
<div class="editor-field">
    @Html.Password("password")
</div>

Мой метод:

[HttpPost]
public ActionResult Editar(FormCollection form)
{
    var newPassword = form["password"];
    var email = Session["email"].ToString();

    UserSet user = db.UserSet.SingleOrDefault(m => m.Email == email);

    if (ModelState.IsValid)
    {
        //Changing password
        user.Password = Crypto.CalculateMD5Hash(newPassword);//this line is ignored
        TryUpdateModel(user);
        db.SaveChanges();
        return Redirect("~/Home/Mural");
    }
     return View(user);
}

Чего мне не хватает?

1 Ответ

1 голос
/ 27 сентября 2011

Ваша строка

TryUpdateModel(user);

Перезапишет все, что вы делали на своей модели ранее.

Измените порядок на

TryUpdateModel(user);
user.Password = Crypto.CalculateMD5Hash(newPassword);//this line is ignored

И это, вероятно, будетработа.

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