2013-08-13 8 views
5

Meine Tabelle hat zwei Spalten CreatedBy und CreateTime. Aus meiner Sicht habe ich diese Felder nicht. Wenn ich jetzt einen Datensatz mit der ASP.NET MVC4 Edit (post) -Methode aktualisiere, werden diese Spalten auf null gesetzt. Aber ich möchte die Werte behalten. Ich weiß in meiner Edit (Post) -Methode, ich kann den Datensatz aus der Datenbank abrufen und diese manuell festlegen. Aber ich frage mich, ob ich Entity Framework bitten kann, die Werte dieser Felder nicht zu ändern.MVC4-Edit-Methode ändert Werte auf Null, wenn Correspndong-Felder nicht im Formular vorhanden sind

Antwort

1

Sie haben hier zur Auswahl:

1) Wie @KennyZ erwähnt, in dem @Html.HiddenFor() irgendwo in Ihrer Ansicht nach in das Formular:

@Html.HiddenFor(m => m.CreatedBy) 
@Html.HiddenFor(m => m.createTime) 

2) Sie können manuell um das betreffende Unternehmen aktualisieren und verlassen Diese beiden Eigenschaften allein:

var ent = dbctx.Entities.Find(model.ID); 

ent.Prop1 = model.Prop1; 
// ... also for other properties except those two property 

dbctx.SaveChanges(); 
3

Nein, Sie können nicht, wenn Sie die alten Werte behalten möchten, müssen Sie zuerst den Datensatz abrufen und dann manuell die Werte zuweisen, die Sie aktualisieren möchten.

db.MyEntity.Attach(myEntity); 
db.Entry(myEntity).Property(e => e.MyProperty).IsModified = true; 
db.SaveChanges(); 

entweder so, wie Sie am Ende zu tun, um die manuelle Arbeit selbst: die, die Sie ändern mögen, wie so die einzige andere Möglichkeit ist durch Ihre Entitätseigenschaft von Eigentum und Tag zu gehen.

0

Sicher kannst du. Ich nehme an, sie sind bereits in Ihrem Modell, fügen Sie sie einfach zum Formular mit Html.HiddenFor(m => m.createdBy) hinzu. Jetzt sind sie in der Form aber nicht angezeigt und haben immer noch Werte auf Post-Methoden.

Verwandte Themen