/ / Вибрати об'єкт з випадаючого списку - c #, asp.net-mvc, entity-framework, asp.net-mvc-4, бритва

Виберіть об'єкт з випадаючого списку - c #, asp.net-mvc, entity-framework, asp.net-mvc-4, бритва

У мене є зображення бритви, де я редагую a Document об'єкт і я намагаюся змінити асоційований Currency запис Доступно Currency перераховані у випадаючому списку.

У мене є два класи в EF, показані нижче.

public class Document
{
public Currency CurrencyCode { get; set; }
}

public class Currency
{
[Key]
public string CurrencyCode { get; set; }

[Column(TypeName = "Money")]
public decimal ExchangeRate { get; set; }
}

Я створюю випадаючий список на зразок цього:

@Html.DropDownListFor(m => m.CurrencyCode.CurrencyCode, new SelectList(ViewBag.Currencies, "CurrencyCode", "CurrencyCode"), Model.LocalCurrencyCode.CurrencyCode)

Коли я публікую вигляд за допомогою кнопки відправки, я бачу, що значення опубліковано: CurrencyCode.CurrencyCode:USD. Моделюючий зв'язок робить хорошу роботу, пов'язану всіма моїми простими полями даних (інші поля не показані). Але об'єкт Document.CurrencyCode залишається нульовим.

Мій план мав лише повернути CurrencyCodeЗначення, а потім шукати фактичну посилання на об'єкт за допомогою Entity Framework і пов'язати його. Але прямо зараз я навіть не отримую половину заповненого об'єкта назад ...

Відповіді:

1 для відповіді № 1

Я вважаю, що ви передали складну модель типу на вашу думку. Щоб отримати вибране значення з DropdownList, ви повинні чітко сказати модель зв'язувача, яку модель ви хочете прив'язати дані до. Див нижче приклад:

@Html.DropDownList("CurrencyCode.CurrencyCode", new SelectList(ViewBag.Currencies, "CurrencyCode", "CurrencyCode"), Model.LocalCurrencyCode.CurrencyCode)