2010-02-23 17 views
9

voglio associare un raccolta utilizzando un prefisso, in questo modoASP.NET MVC Modello Binding una collezione con un prefisso

public ActionResult Whatever([Bind(Prefix = "Prefix")] CustomModel[] models) 

ho creato gli elementi del modulo utilizzando

<%= Html.TextBox("Prefix.models[" + i + "].Property") %> 

che hanno generato entrate html come questo

<input id="Prefix_models[0]_Property" name="Prefix.models[0].Property" /> 

il mio problema è che il legante modello predefinito non si legherà con un prefisso. Ottengo null per i modelli arg nel metodo action.

Se spoglio i prefissi dall'html e rimuovi l'attributo Bind, tutto funziona correttamente. Non riesco a immaginare che il raccoglitore modello predefinito non gestirà un prefisso su una raccolta, quindi devo fare qualcosa di sbagliato.

Per favore aiuto. Saluti!

risposta

10

Il prefisso all'interno di [Bind] non è preposto al nome del parametro, sostituisce completamente il nome del parametro. Così, se il metodo di azione ha questa firma:

public ActionResult MyAction([Bind(Prefix = "foo")] string[] bar) { ... } 

Il legante si aspetta foo[0], foo[1], ecc

+0

DOH! Giornata dura. Grazie per avermi messo la testa dritta! – spot

1

UpdateModel() e TryUpdateModel() accettano un parametro per il prefisso. Hai provato?

Problemi correlati