У меня есть объект (QuoteSheet), содержащий дочерний объект (QuoteTask), который загружается с помощью EntityFramework. Однако при отправке этой формы я получаю сообщение об ошибке.
Я создал страницу редактирования для сущности QuoteSheet, которая затем использует EditorTemplate для редактирования дочерней сущности QuoteTask.
Код контроллера следующий:
public ActionResult TestEdit(int Id)
{
var quote = DataContext.QuoteSheets.Where(x => x.ID == Id).FirstOrDefault();
return View(quote);
}
[HttpPost]
public ActionResult TestEdit(Models.QuoteSheet quote)
{
return View(quote);
}
Урезанная версия представления выглядит следующим образом:
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
@Html.HiddenFor(x => x.JobID);
<div class="sectionHeader">Sheet Details</div>
<div class="sectionContent">
<table>
<tr>
<td width="150">Sheet Desc.</td><td>@Html.TextBoxFor(x => x.Description, new { size = "50" })</td>
</tr>
<tr>
<td>Quantity Required</td><td>@Html.EditorFor(x => x.Quantity)</td>
</tr>
</table>
</div>
<div class="sectionHeader">Tasks</div>
<div class="sectionContent">
<table id="Tasks">
<tr>
<th>Labour Group</th>
<th>Task Description</th>
<th>Total Hrs</th>
<th>Rate</th>
<th>Cost</th>
</tr>
@Html.EditorFor(x => x.QuoteTasks)
</table>
<input type="button" name="AddTasks" id="AddTasks" value="Add" />
</div>
<input type="submit" value="Submit" />
@Html.ValidationSummary()
}
И EditorTemplate:
@model Ornavi.Models.QuoteTask
<tr>
<td>@Html.EditorFor(x => Model.LabourGroup)</td>
<td>@Html.EditorFor(x => Model.Description)</td>
<td>@Html.EditorFor(x => Model.TotalHours)</td>
<td>@Html.EditorFor(x => Model.Rate)</td>
<td>@Html.HiddenFor(x => Model.ID)</td>
</tr>
Когда я отправляю форму, я получаю следующую ошибку:
Коллекция EntityCollection уже инициализирована. Метод InitializeRelatedCollection следует вызывать только для инициализации новой EntityCollection во время десериализации графа объектов.
Это происходит только тогда, когда я использую EditorTemplate - если я удалю шаблон редактора и просто отправлю основной объект, он будет работать нормально.
Я установил точку останова в функции [httppost] TestEdit, но исключение возникает до того, как достигнет этой точки.
Есть идеи о том, как успешно использовать EditorTemplate для редактирования дочернего объекта?
EntityObject
производные объекты? - person Ladislav Mrnka   schedule 20.12.2011