al pasar una colección a EditorFor (), genera nombres no válidos para los elementos de entrada
Tengo un BookCreateModel que consiste en la información del plano del libro, como Título, Publicación Año y etc., más una colección de autores del libro (tipo complejo):
public class BookCreateModel
{
public string Title { get; set; }
public int Year { get; set; }
public IList<AuthorEntryModel> Authors { get; set; }
}
public class AuthorEntryModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
en la vista CreateBook que he usadoEditorFor
ayudante
@Html.EditorFor(m => m.Authors, "AuthorSelector")
Edit1:y la plantilla de AuthorSelector es la siguiente:
<div class="ptr_authors_wrapper">
@for (int i = 0; i < Model.Count; i++)
{
<div class="ptr_author_line" data-line-index="@i">
@Html.TextBoxFor(o => o[i].FirstName)
@Html.TextBoxFor(o => o[i].LastName)
</div>
}
</div>
<script>
...
</script>
laAuthorSelector
la plantilla contiene algunas etiquetas de envoltorio que deben conocer el índice de cada elemento renderizado más algunos javascript que manejan las interacciones de la entrada del niño y deben procesarse una vez (dentro delAuthorSelector
plantilla), por lo que no es posible deshacerse del bucle for / o la plantilla AuthorSelector.
Ahora el problema es Editor, por ser un poco extraño y generar nombres de entrada como este:
<input id="Authors__0__FirstName" name="Authors.[0].FirstName" type="text" value="" />
<input id="Authors__0__LastName" name="Authors.[0].LastName" type="text" value="" />
Como se puede ver en lugar de generar nombres comoAuthors[0].FirstName
agrega un punto adicional que hace que el modelo de carpeta predeterminado no pueda analizar los datos publicados.
alguna idea ?
Gracias !