Jestem nowy w asp.net mvc 4 i EF. Tworzę model użytkownika, który tworzy/aktualizuje informacje o użytkowniku. Kod modelu jest następujący:Jak uniknąć niektórych pól do zaktualizowania w modelu przy użyciu asp.net mvc 4
....
public int UserID { get; set; }
[Required]
public string UserName { get; set; }
[Required]
public string Password { get; set; }
[Compare("Password")]
public string VerifyPassword { get; set; }
.....
SOME OTHER FIELDS COMES HERE
......
Ten sam model używany do tworzenia/aktualizowania aktywności. Działa to dobrze dla użytkownika tworzenia, ale podczas aktualizacji nie chcę, aby użytkownik zaktualizował swój identyfikator, nazwę użytkownika, więc będę go czytać tylko nie chcę wyświetlać hasła użytkownika/weryfikować pól hasła, więc usunąłem go z widoku. Teraz podczas aktualizacji (tryb edycji) zawsze otrzymuję komunikat o błędzie sprawdzania poprawności dla pola hasła. Tak więc moje pytanie brzmi: jak uniknąć aktualizacji tych pól i aktualizacji dla innych pól. Aby rozwiązać ten problem, próbuję stworzyć viewmodel, ale to mi nie pomaga. Dodano także kod z pominięciem sprawdzania takiego kontrolera:
public ActionResult Edit(User user)
{
ModelState.Remove("Password");
ModelState.Remove("VerifyPassword");
ModelState.Clear();
if (ModelState.IsValid)
{
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
}
To daje mi ModelState.IsValid = true, ale nie powiedzie się, aby zaktualizować. Proszę, daj mi rozwiązanie tego problemu.
góry dzięki ..
Dzięki za odpowiedź. Zrobiłem to samo, co powiedziałeś. Biorąc rekord przez UserID i ustawiam tylko te wartości, które chcę zaktualizować, z wyjątkiem hasła i innych pól, których nie chcę aktualizować. To działa dla mnie. Dzięki. – CodeWarrior
Bez problemu, miło mi pomóc. – hutchonoid
To pomogło również! Trochę poprawy: Car c = db.Cars.Find (car.Id); – stefan