Wenn eine Auflistung an EditorFor () übergeben wird, werden ungültige Namen für Eingabeelemente generiert
Ich habe ein BookCreateModel, das aus den Flugzeuginformationen des Buchs wie Titel, Erscheinungsjahr usw. sowie einer Sammlung von Buchautoren (komplexer Typ) besteht:
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; }
}
in der CreateBook Ansicht habe ich benutztEditorFor
helfer:
@Html.EditorFor(m => m.Authors, "AuthorSelector")
Edit1:und AuthorSelector Vorlage ist wie folgt:
<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>
dasAuthorSelector
Die Vorlage enthält einige Wrapper - Markups, die den Index jedes gerenderten Elements kennen müssen, sowie JavaScript, das die Interaktionen der untergeordneten Eingaben behandelt und einmal (innerhalb von) gerendert werden mussAuthorSelector
template), daher ist es nicht möglich, die for-Schleife / oder die AuthorSelector-Vorlage zu entfernen.
jetzt ist das Problem EditorFür ein wenig seltsam und generieren Eingabenamen wie folgt:
<input id="Authors__0__FirstName" name="Authors.[0].FirstName" type="text" value="" />
<input id="Authors__0__LastName" name="Authors.[0].LastName" type="text" value="" />
wie Sie sehen können, anstatt Namen wie zu generierenAuthors[0].FirstName
Es wird ein zusätzlicher Punkt hinzugefügt, wodurch der Standard-Modellordner keine veröffentlichten Daten mehr analysieren kann.
irgendeine Idee ?
Vielen Dank !