Я играю с MVC4 и EF Code Сначала, и у меня возникла проблема с получением DropDownList для обновления внешнего ключа типа модели.MVC: Обновление отношения FK от SelectList
Вот мои модели:
public class Customer
{
public int CustomerID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class Party
{
public int PartyID { get; set; }
public virtual Customer Host { get; set; }
public string Location { get; set; }
public DateTime Date { get; set; }
}
Так Сторона имеет Host
, которая является Customer
В контроллере для метода /Party/Create
GET, я передаю список клиентов в ViewBag :
ViewBag.Customers = new SelectList(db.Customers, "CustomerID", "FirstName");
И тогда в представлении Я рендеринга это как DropDownList:
@Html.DropDownListFor(model => model.Host, ViewBag.Customers as SelectList, String.Empty)
Это все работает отлично, я могу выбрать из списка клиентов в раскрывающемся списке. Однако, когда я отправляю форму, метод/Party/Create POST не вставляет данные, потому что ModelState
недействителен. Глядя на ModelState
, я могу видеть, что CustomerID
выбранного Клиентом присутствует, но он не в состоянии быть преобразован из строки в объект типа Customer
Что я пропустил?
Удивительный, что отсортирован проблему с 'ModelState' будучи инвалидом, спасибо! Теперь у меня есть несколько другая проблема, а именно то, что она вставляет новый «Клиент» вместо того, чтобы просто добавлять отношения FK к существующему, даже если идентификатор совпадает с существующим клиентом. В любом случае, спасибо за вашу помощь! –
Просто для того, чтобы следить за этим, я решил проблему вставки, явно добавив свойство CustomerID и украсив его как внешний ключ для свойства навигации «Host». –
Только у той же проблемы. Кажется немного раздражающим, что вам нужно украсить режим с помощью внешних клавиш, но, о, хорошо! – Sergio