У меня есть БД с двумя таблицами счетов-фактур и клиентов.Клиенты ПК - это FK в таблице счетов.У меня есть представление Создать, в котором пользователь заполняет данные счета.В этой форме у меня есть @ Html.DropDownList с SelectList, заполненный именами уже существующих в клиентах db.На основе выбора пользователя поля данных клиента автоматически заполняются данными клиента из базы данных через частичное представление:
@using (Ajax.BeginForm("CustomerSelect", "Invoice", new AjaxOptions{
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "CustomerFields"}))
Это работает хорошо, но когда я создаю кнопку «Отправить», она создает новый экземпляр пользователя.в базе данных, хотя он должен использовать идентификатор одного из полученных из базы данных.Когда частичное представление отображается в представлении «Создать», оно отображает правильный идентификатор клиента:
<div class="editor-label">
@Html.LabelFor(model => model.Customer)
<div class="editor-field">
@Html.EditorFor(model => model.Customer)
@Html.ValidationMessageFor(model => model.Customer)
</div>
</div>
Но когда я заглядываю внутрь объекта счета в методе httppost контроллера Create, он показывает другой (новый) идентификатор клиента:
[HttpPost]
public ActionResult Create(Invoice invoice)
{
if (ModelState.IsValid)
{
db.Invoices.Add(invoice); **//invoice.Customer.CustomerID == 1**
db.SaveChanges(); **//invoice.Customer.CustomerID changes to next free in the db == 7**
return RedirectToAction("Index");
}
return View(invoice);
}
Что я делаю не так?