Сложные объекты, как раз могут передаваться, просто надо сделать формы другим образом. Скорее всего ты в этот asp-form передаешь всю модель. Предполагаю, что вся модель - это Address.
Да, из вложенных сложных структур плохо создаются формы. Для решения тебе надо будет форму вручную: все поля и их связь с моделью прописывать самому. Есть
шаблонные помощники (Html.EditorFor и другие) - используй их.
Например, так (внимание, написал по воспоминаниям, может даже не компилироваться)
@Html.BeginForm()
{
<label>Страна</label>
@Html.EditorForModel(x => x.Country)
<label>Город</label>
@Html.EditorForModel(x => x.City)
}
Кроме этого, есть пара других советов:
1. Создай специальные DTO классы, которые будут потом отображаться в эти объекты БД.
2. Раз ты делаешь через asp-form, то лушче добавь специальные атрибуты валидации: EmailAddress, Range и т.д.
P.S. в 1 пункте проблема глубже, чем простой маппинг. Если делать такой подход, который показан:
- Изменения схемы БД потребуют изменения UI
- Клиент может передать данные, о которых он знать не должен (например, добавишь новое поле куда-нибудь и оно случайно обновится)