przekazując kolekcję do EditorFor (), generuje niepoprawne nazwy elementów wejściowych

Mam BookCreateModel, który składa się z informacji o płaszczyźnie książki, takich jak tytuł, publikacja, itd. Oraz kolekcja autorów książek (typ złożony):

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; }
}

w widoku CreateBook użyłemEditorFor pomocnik:

@Html.EditorFor(m => m.Authors, "AuthorSelector")
Edytuj1:

a szablon AuthorSelector jest następujący:

<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>

AuthorSelector szablon zawiera kilka znaczników opakowujących, które muszą być świadome indeksu każdego renderowanego elementu, a także javascript obsługujący interakcje danych wejściowych podrzędnych i muszą być renderowane tylko raz (wewnątrzAuthorSelector szablon), więc pozbycie się szablonu for loop / lub AuthorSelector nie jest możliwe.

teraz problem polega na tym, że EditorFor działa trochę dziwnie i generuje takie nazwy wejściowe jak:

<input id="Authors__0__FirstName" name="Authors.[0].FirstName" type="text" value="" />
<input id="Authors__0__LastName" name="Authors.[0].LastName" type="text" value="" />

jak widać zamiast generowania nazw takich jakAuthors[0].FirstName dodaje dodatkową kropkę, która sprawia, że ​​domyślny segregator modelu nie może przeanalizować opublikowanych danych.

dowolny pomysł ?

Dzięki !

questionAnswers(6)

yourAnswerToTheQuestion