2010-02-23 13 views
9

quiero unir una colección usando un prefijo, al igual queASP.NET MVC modelo de unión de una colección con un prefijo

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

que creó los elementos de formulario utilizando

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

que generaron entradas html como esto

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

Mi problema es que el encuadernador de modelo predeterminado no se vinculará con un prefijo. Obtengo nulo para los modelos arg en el método de acción.

Si elimino los prefijos del html y elimino el atributo Vincular, todo funciona bien. No puedo imaginarme que el archivador de modelo predeterminado no maneje un prefijo en una colección, así que debo estar haciendo algo mal.

Por favor ayuda. ¡Aclamaciones!

Respuesta

10

El prefijo dentro de [Enlazar] no está antepuesto al nombre del parámetro, reemplaza completamente el nombre del parámetro. Así que si su método de acción tiene esta firma:

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

El ligante espera foo[0], foo[1], etc.

+0

DOH! Día áspero ¡Gracias por aclarar mi mente! – spot

1

UpdateModel() y TryUpdateModel() toman un parámetro para el prefijo. ¿Has probado eso?

Cuestiones relacionadas