Как сохранить исходное значение для некоторого поля при выполнении Edit на MVC?

== сравнивает ссылки на объекты в Java и не является исключением для объектов String.

Для сравнения фактического содержимого объектов (в том числе String) необходимо использовать equals.

Если сравнение двух объектов String с использованием == оказывается true, это связано с тем, что объекты String были интернированы, а виртуальная машина Java имеет несколько ссылки указывают на тот же экземпляр String. Не следует ожидать сравнения одного объекта String, содержащего то же содержимое, что и другой объект String, используя == для оценки как true.

13
задан Community 23 May 2017 в 12:26
поделиться

1 ответ

Можно использовать 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 потерян.

0
ответ дан 1 December 2019 в 17:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: