2010-09-01 9 views
5

ho un'azione di controllo che assomiglia:Utilizzando un modello personalizzato legante per un argomento di un'azione di controllo

public ActionResult DoSomethingCool(int[] someIdNumbers) 
{ 
    ... 
} 

Vorrei essere in grado di utilizzare un modello personalizzato legante la creazione di tale matrice di ID da un elenco di checkbox sul client. C'è un modo per legarsi a questo argomento? Inoltre, c'è un modo per un raccoglitore di modelli per scoprire il nome dell'argomento utilizzato? Ad esempio, nel mio raccoglitore di modelli mi piacerebbe sapere che il nome dell'argomento era "someIdNumbers".

risposta

6

di scoprire il nome dell'argomento è possibile utilizzare la proprietà ModelBindingContext.ModelName

public class MyModelBinder : IModelBinder 
{ 
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 
    { 
     var thisIsTheArgumentName = bindingContext.ModelName; 
    } 
} 
+0

Questo approccio è molto utile per riutilizzare lo stesso raccoglitore per più argomenti diversi. – jonnybot

11

L'attributo ModelBinder può essere applicato a singoli parametri di un metodo di azione:

public ActionResult Contact([ModelBinder(typeof(ContactBinder))]Contact contact) 

Qui, il Il parametro contact è associato utilizzando lo ContactBinder.

Problemi correlati