У меня есть особая форма, которая содержит вложенный набор Html.BeginCollectionItems
. Учитывая следующий макет, у меня есть элементы коллекции для Addresses
и для Files
:
Basic Form Information
Address #1
File #1
File #2
Address #2
File #1
File #2
CollectionItem
для Addresses
работает, как ожидалось, однако Files
внутри каждого Address
не принимаются, когда я отправляю форму. После проверки я понимаю, почему файлы не добавляются к каждому адресу. Это потому, что случайный Id
, назначенный HtmlCollectionItem
для Address
, не добавляется в качестве префикса к каждому File
CollectionItem
. Как мне справиться с этим?
Небольшая информация:
Пользователь нажимает «Добавить адрес», чтобы динамически создать Address
, а затем в разделе формы «Адрес» пользователь может нажмите «Добавить файл», чтобы добавить файл к адресу. Я использую. NET Компоненты представления Core для визуализации на странице.
Учитывая следующие (урезанные) модели:
BasicForm.cs
class BasicForm {
public int BasicFormId { get; set; }
...
public ICollection<Address> Addresses { get; set; }
}
Address.cs
class Address {
public int AddressId { get; set; }
...
public ICollection<File> Files { get; set; }
}
File.cs
class File {
public int FileId { get; set; }
...
}
Я создал HTML Просмотреть компоненты для Addresses
и Files
:
Представления / Общий / Адрес / По умолчанию. html
@using (Html.BeginCollectionItem("Addresses"))
{
<div class="form-row">
<input asp-for="AddressId" hidden />
</div>
}
Вот файловый компонент, Я думаю, что мне нужно каким-то образом добавить HTML ID коллекции родительского адреса в CollectionItem здесь:
Views / Shared / File / Default. html
<!-- Can I Add something to this line below to reference the parent Address?? -->
@using (Html.BeginCollectionItem("Files"))
{
<div class="form-row">
<input asp-for="FileId" hidden />
</div>
}
Я опускаю методы контроллера return ViewComponent("Address", addressModel)
и return ViewComponent("File", fileModel)
, которые вызываются, когда пользователь щелкает, чтобы создать адрес / файл (в теле каждого метода нет ничего, кроме возврата модели в указанный ViewComponent). Я видел следующий ответ StackOverflow , но добавление HtmlFieldPrefix
пусто в моем случае. В любом случае он использовал Partials.
Кто-нибудь знает правильный способ ссылки HtmlCollectionItems
в родительском элементе коллекции? Спасибо!