Wie behalten Sie den ursprünglichen Wert für einige Feld beim ausführen von Bearbeiten auf MVC?

Wie Sie wissen, Wenn wir wollen, zu Ändern-Daten, werden Wir gehen Sie auf Seite Bearbeiten:

public ActionResult EditAdmin(int UserId)
{ 
        User user = persons.Users.Find(id);
        return View(user);
}

Dann reichen Wir es auf der Edit-Seite, wird es Ändern:

public ActionResult EditAdmin(User user)
{ 
        persons.Entry(user).State = EntityState.Modified;
        persons.SaveChanges();
}

Aber das problem ist , ich habe eine Menge von Feld - brauchen nicht geändert werden,:

public class User{
    public int UserId {get; set;} //do not need modify
    public int Password {get; set;} //do not need modify
    public string Name {get; set;}
    public bool Sex {get; set;}
    public DateTime AddTime {get; set;} //do not need modify
}

Offensichtlich, ich kann nicht anzeigen, einige Feld auf meiner Seite Bearbeiten verwenden Versteckt, weil ich nicht wollen, dass es die Anzeige auf der Benutzeroberfläche. aber, wenn senden, dass ich es noch brauchen immer noch den ursprünglichen Wert. So Ist es eine gute Idee für Sie? Dank

Update1:

Warum kann ich nicht verwenden, wie

entry.Property(e => e.Password).IsModified = false;

link: https://stackoverflow.com/a/18004476/1900498

Aber Es wird angezeigt :

Validierung fehlgeschlagen ist, für eine oder mehrere Personen. Sehen
'EntityValidationErrors' - Eigenschaft für weitere details.

Was Sie gar nicht haben wollen, diese Werte in die Nachricht! Verwenden Sie einen view-Modell oder DTO.
Benötigen Sie einen neuen Wert für alle geänderten Felder. Sie können auch übernehmen Sie die nicht-geänderten Wert für die anderen modifizierbaren Feldern. Aber warum denken Sie, müssen Sie den alten Wert für den nicht-modifizierbaren Felder? Sie nicht (mit Ausnahme der primary key und optimistische concurrency-version oder der Zeitstempel, natürlich).

InformationsquelleAutor qakmak | 2014-10-24

Schreibe einen Kommentar