Ho un tipo:ASP.NET MVC - miscelazione su misura e modello predefinito Binding
public class IssueForm
{
Order Order {get; set;}
Item Item {get; set;}
Range Range {get; set;}
}
Ho creato un modello personalizzato legante a causa dei requisiti di ordine ed elemento, ma Gamma potrebbero ancora utilizzare il modello Binder predefinito.
C'è un modo all'interno del mio modello di modello personalizzato per chiamare il modello di modello predefinito per restituire un oggetto Range? Penso che dovrei semplicemente installare ModelBindingContext correttamente, ma non so come.
EDIT
Guardando il primo commento e la risposta - sembra che eredita da legante modello predefinito potrebbe essere utile.
Per aggiungere più specifiche per il mio setup finora ho:
public IssueFormModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
Order = //code to pull the OrderNumber from the context and create an Order
Item = //code to pull the ItemNumber from the context and create an Item
IssueForm form = IssueFormFactory.Create(Order, Item);
form.Range = // ** I'd like to replace my code with a call to the default binder **
return form
}
}
Questo potrebbe essere un modo stupido di farlo ... questo è il mio primo legante modello. Basta sottolineare la mia attuale implementazione.
EDIT # 2
Quindi le risposte per ignorare BindProperty funziona se posso collegare in come un metodo "Sto tutto fatto vincolante" e chiamare il metodo di fabbrica con le proprietà.
Immagino che dovrei davvero considerare l'implementazione di DefaultModelBinder e smettere di essere stupido.
Non sono sicuro che sia la soluzione più elegante, ma potresti derivare il tuo modello personalizzato da DefaultModelBinder anziché implementare IModelBinder? Quindi, quando si esegue l'override di BindModel, passare la responsabilità a DefaultModelBinder, laddove appropriato. Altrimenti, usa l'associazione personalizzata. –
Sì, sto vedendo alcuni legatori di modelli uscire da IModelBinder e DefaultModelBinder. Immagino che DefaultModelBinder abbia alcuni metodi extra che presumo chiamino dal metodo BindModel, quindi puoi concentrare maggiormente le tue esigenze? – anonymous
Conferma solo la mia decisione di ignorare ModelBinder e l'elaborazione dell'inserimento del codice e la convalida manualmente. Ora l'ho coerente, trasparente e adattabile alle esigenze future presenti e immaginabili. – User