при передаче коллекции в EditorFor () он генерирует недопустимые имена для элементов ввода

У меня есть BookCreateModel, которая состоит из информации о плоскости книги, такой как Title, PublishYear & amp; и т.д. плюс коллекция авторов книги (сложный тип):

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

в представлении CreateBook я использовалEditorFor помощник:

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

и AuthorSelector шаблон, как показано ниже:

<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 шаблон содержит некоторые разметки-обертки, которые должны знать об индексе каждого отображаемого элемента, а также некоторый javascript, который обрабатывает взаимодействия дочернего ввода и должен отображаться один раз (внутриAuthorSelector шаблон), таким образом, избавиться от цикла for / или шаблона AuthorSelector невозможно.

теперь проблема заключается в том, что EditorFor действует немного странно и генерирует входные имена, например:

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

как вы можете видеть вместо генерации имен, таких какAuthors[0].FirstName это добавляет дополнительную точку, которая делает связыватель модели по умолчанию неспособным проанализировать отправленные данные.

любая идея ?

Спасибо !

Ответы на вопрос(6)

Ваш ответ на вопрос