2009-10-11 7 views
27

Sto cercando una serie di best practice da utilizzare quando si implementa IModelBinder.Procedure consigliate durante l'implementazione di IModelBinder

Ho letto tre diversi libri MVC e ognuno fa alcune cose leggermente diverse nelle loro implementazioni senza alcuna spiegazione reale.

  • Il Hanselman, Haack, Guthrie, Conery libro non menziona neppure IModelBinder
  • Palermo raccomanda che si estende DefaultModelBinder piuttosto che applicazione diretta di IModelBinder, ma io non vedo proprio come sfruttare i benefici
  • Sanderson menziona l'aggiornamento delle istanze Model esistenti, oltre a chiamare ModelState.SetModelValue() per seguire la convenzione.

Voglio solo assicurarmi che i miei raccoglitori modello seguano le convenzioni e che capisca perfettamente l'intero ModelBindingContext.

Eventuali suggerimenti, trucchi, BUONI tutorial da consigliare?

risposta

9
+0

L'articolo cita NOTE dati così mi sono chiesto se avrei dovuto ereditare da DataAnnotationsModelBinder invece. La risposta è no. DefaultModelBinder di MVC 2 RTM contiene già la logica di DataAnnotationsModelBinder. Vedi http://stackoverflow.com/questions/2666955/dataannotationsmodelbinder-with-mvc2-rtm/2669207#2669207 –

2

Ho ereditato da DefaultModelBinder, perché associa automaticamente le proprietà di base nell'entità. L'ho migliorato, quindi associa anche le proprietà di navigazione. Il mio raccoglitore esegue prima l'associazione ereditata e quindi cerca ulteriori valori di proprietà di navigazione nel modulo. Penso che il tuo approccio dovrebbe dipendere da ciò che vuoi veramente fare. Puoi anche utilizzare il riflettore e vedere cosa si trova davvero dietro il raccoglitore predefinito. Questo potrebbe convincerti ad ereditare.

0

MVC Futures 2 ha un sistema di associazione estensibile. . Potete saperne di più nella documentazione di rilascio a http://aspnet.codeplex.com/releases/view/41742

Basta scaricare "ASP.NET MVC 2 Futures Extensible modello Binder Documentazione"

1

Un esempio vivo di IModelBinder è disponibile qui. In questo esempio è stato eseguito il wrapping di una complessa query Apache solr per passare oggetti semplici al Modello.

IModelBinder Attuazione

Controller

Problemi correlati