==
сравнивает ссылки на объекты в Java и не является исключением для объектов String
.
Для сравнения фактического содержимого объектов (в том числе String
) необходимо использовать equals
.
Если сравнение двух объектов String
с использованием ==
оказывается true
, это связано с тем, что объекты String
были интернированы, а виртуальная машина Java имеет несколько ссылки указывают на тот же экземпляр String
. Не следует ожидать сравнения одного объекта String
, содержащего то же содержимое, что и другой объект String
, используя ==
для оценки как true
.
Можно использовать TempData как это:
public ActionResult EditAdmin(int UserId)
{
User user = persons.Users.Find(id);
TempData["oldUser"] = user;
return View(user);
}
Затем можно восстановить его после сообщения:
public ActionResult EditAdmin(User user)
{
User oldUser = TempData["oldUser"] == null ? persons.Users.Find(user.UserId) : (User) TempData["oldUser"];
if (oldUser.Sex != user.Sex) doSomething();
persons.Entry(user).State = EntityState.Modified;
persons.SaveChanges();
}
необходимо проверить TempData["oldUser"] == пустой указатель, потому что в случае ошибок или пользователя, отступающего к странице иногда, TempData потерян.