Domanda

Sarebbe utile per limitare la portata di un modello personalizzato legante per solo un metodo specifico azione di controllo o l'intero suo controllore. Hanselman ha scritto una frase che implicava siti alternativi per il modello personalizzato di registrazione del legante, ma non sembrava mai finire il pensiero:

  

Puoi o mettere questo modello Binder personalizzato responsabile di tutte le vostre DateTimes registrandolo nel Global.asax

E 'possibile fare queste registrazioni in un ambito più piccolo del sistema di controllo? Se è così, c'è qualche ragione per evitare di farlo al di fuori del Global.asax MvcApplication (ad esempio, motivi di prestazioni)?

È stato utile?

Soluzione

Mentre stavo chiudendo le schede ho aperto per questa domanda che non avevo raggiunto prima di rinunciare, ho trovato qualcuno con una risposta . È possibile assegnare un ModelBinderAttribute ai modelli vista:

[ModelBinder(typeof(SomeEditorModelModelBinder))]
public class SomeEditorModel {
    // display model goes here
}
public class SomeEditorModelModelBinder : DefaultModelBinder {
    // custom model binder for said model goes here
}

Anche se non era proprio quello che cercavo, è ancora più specifico di registrazione per un metodo di controllo o il controller.

Aggiorna

Grazie al commento di Levi indicando una soluzione molto migliore. Se si sta consumando l'oggetto con un modello personalizzato legante in un metodo di azione MVC direttamente, si può semplicemente decorare il parametro del metodo con la proprietà ModelBinder.

public ActionResult SomeMethod([ModelBinder(typeof(SomeEditorModelBinder))]SomeEditorModel model) { ... }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top