@dimayudin357

Как создавать и отображать элементы в одном представлении (представление строго типизировано)?

Было два строго типизированных представления: Summary (для отображения городов) и Create (для создания новых городов)
в Summary: @model IEnumerable<City>, вCreate @model City
И отображение и создание работало нормально.

Объединил представления, и перестал работать Create (В контроллере в Post метод приходит Null ).
Я подозреваю, что проблема в том что директива @model теперь заточена на IEnumerable.

Подскажите в чем может быть проблема.
  • Вопрос задан
  • 141 просмотр
Пригласить эксперта
Ответы на вопрос 3
AlekseyNemiro
@AlekseyNemiro
full-stack developer
Нужно создать новую модель, которая будет включать в себя IEnumerable<City> и City.

Примерно так:
public class NewModel
{

  public IEnumerable<City> CitiesList { get; set; }

  public City City { get; set; }

}

Использовать:
@model NewModel

@foreach(var city in Model.CitiesList)
{
  // список
}

@Model.City.КакоетоСвойство

Для удобства можно сделать частичные представления и передавать в них CitiesList и City. Первое представление должно ожидать IEnumerable<City>, второе - City. Т.е. будет примерно то, что у вас уже есть, просто обычные представления нужно сделать частичными (убрать все, что связано с шаблонизацией). Вывести эти представления в общем представлении, с передачей в их модель значений из модели общего представления (NewModel):

@model NewMode

@Html.Partial("CitiesList", Model.CitiesList)

@Html.Partial("CityEditor", Model.City)

Частичное представление CitiesList:

@model IEnumerable<City>

// ...

Частичное представление CityEditor:

@model City

// ...
Ответ написан
@Free_ze
Пишу комментарии в комментарии, а не в ответы
@model требуется для отображения, на привязку модели он не должен влиять.

То есть, если по роутингу у вас подходит метод Create(City city), то привязка будет стараться отыскать среди ValueProvider'ов значения, совпадающие с именами свойств модели (в данном случае - City).

Какие у вас выдает ошибки привязки?
Ответ написан
Комментировать
@dimayudin357 Автор вопроса
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект