У меня есть приложение asp.net mvc с формой.
Когда вы отправляете форму, она добавляет записи в базу данных sql с linq-to-sql. После добавления записей контроллер снова отображает форму и должен показать эти новые значения в форме. Но при отображении формы значения остаются пустыми, пока вы не обновите страницу.
При трассировке кода я вижу записи, добавляемые в базу данных при отправке, но представление не отображает их, пока я не обновлю. Представление не является проблемой, оно просто отображает модель представления, которая пропускает новые записи сразу после публикации.
Я знаю, что это немного расплывчато, но не был уверен, какие части кода включить сюда.
Может ли это быть как-то связано с жизненным циклом контекста данных? По сути, при публикации формы создается контекст данных, затем в методе, который отображает форму, создается другой контекст данных.
Любые предложения о том, что может быть причиной этого?
Обновление:
Я могу выложить здесь много кода, но я постараюсь дать вам упрощенную версию:
В этом коде ведется график работы волонтеров
Представление использует модель представления со списком расписаний и отображает форму расписаний и связанных с ними назначений. (дочерние записи)
Когда форма публикуется с новым расписанием и назначениями, создается запись расписания и создаются связанные записи назначений.
// Controller
public class SchedulerController : Controller
{
ScheduleServices ScheduleSvc = new ScheduleServices(); // creates a new data context
public ActionResult Index()
{
return ShowSchedules();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection form)
{
ScheduleSvc.ProcessRequest(form);
return Index();
}
}
public ActionResult ShowSchedules()
{
SchedulerViewModel sched_vm = new SchedulerViewModel();
sched_vm.EventsAndSchedules = ScheduleSvc.GetEventSchedulesFromDate();
return View(sched_vm);
}
ProceessScheduleRequest(ScheduleRequest req)
{
CreateSchedule(req);
AssignmentServices AssignmentSvc = new AssignmentServices(); // creates it's own data context
AssignmentSvc.Assign(req);
}