2013-08-13 8 views
5

La mia tabella ha due colonne CreatedBy e CreateTime. Nel mio modulo di visualizzazione, non ho questi campi. Ora quando aggiorno un record usando il metodo ASP.NET MVC4 Edit (post), queste colonne sono impostate su null. Ma voglio mantenere i valori. So che nel mio metodo Edit (post), posso recuperare il record dal database e impostarlo manualmente. Ma mi chiedo se posso chiedere a Entity Framework di non modificare i valori di questi campi.Il metodo di modifica MVC4 modifica i valori su null se non esistono campi correspondenti nel modulo

risposta

1

Bisogna scelte qui:

1) Come indicato @KennyZ, aggiungi al @Html.HiddenFor() da qualche parte nella vista, nella vostra forma:

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

2) È possibile aggiornare manualmente tale entità e lasciare solo queste due proprietà:

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

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

dbctx.SaveChanges(); 
3

No, non è possibile, se si desidera mantenere i valori precedenti, è necessario prima ottenere il record e quindi assegnare manualmente i valori che si desidera aggiornare. L'unico altro modo è quello di passare attraverso la vostra proprietà entità da proprietà e tag che quelli che si desidera modificare, in questo modo:

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

in entrambi i casi si finisce per dover fare il lavoro manuale da soli.

0

Certo che puoi. Presumo che siano già nel tuo modello, basta aggiungerli al modulo con Html.HiddenFor(m => m.createdBy). Ora sono nella forma ma non sono visualizzati e hanno ancora valori sui metodi Post.

Problemi correlati