Я думаю, что проблема заключается в несоответствии между тем, что ожидает ваш взгляд, и тем, что передает ваш контроллер.
В вашем операторе выбора вы выбираете новый анонимный тип, но ваше представление ожидает тип IEnumerable<WhatsOn>
, предполагая, что в полях задано день, а whtscount заменяет запрос даты на
var datequery =
db.WhatsOns.Where(c => c.start > myDate).OrderByDescending(c => c.start).GroupBy(c => c.start).Select(
sGroup => new WhatsOn()
{
day = sGroup.Key,
whtscount = sGroup.Count()
});
Обновление: Ошибка указывает на то, что ваш запрос на выборку не может быть преобразован в эквивалентный sql, вы можете попробовать изменить его на
var datequery =
db.WhatsOns.Where(c => c.start > myDate).OrderByDescending(c => c.start).GroupBy(c => c.start).AsEnumerable().Select(
sGroup => new WhatsOn
{
day = sGroup.Key,
whtscount = sGroup.Count()
});
Обновить: Я думаю, что проблема может заключаться в том, что когда вы переходите к методу post редактирования, объект WhatsOn больше не ассоциируется с базой данных WhatsOn, из которой он был изначально загружен, попробуйте изменить его на
public ActionResult Edit(int id)
{
WhatsOn whatson = db.WhatsOns.Find(id);
return View(whatson);
}
[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
WhatsOn whatsOnmodel = db.WhatsOns.Find(id);
if (TryUpdateModel(whatsOnmodel))
{
db.SaveChanges();
return RedirectToAction("Index");
}
return View(whatsOnmodel );
}
Обновление: Если этот подход не работает, вы можете увидеть, если ваш подход просто добавил загрузку в начале, чтобы
[HttpPost]
public ActionResult Edit(int id, WhatsOn whatson)
{
WhatsOn whatsOnmodel = db.WhatsOns.Find(id);
if (ModelState.IsValid)
{
whatsOnmodel.day = whatson.day;
whatsOnmodel.whtscount = whatson.whtscount;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(whatsOnmodel);
}
вы могли проверить это и посмотреть, чтослучается
Обновление: На самом деле я думаю, что ваш первый подход должен сработать, но я думаю, что он требует Id, что произойдет, если вы сделаете это
[HttpPost]
public ActionResult Edit(int id, WhatsOn whatson)
{
if (ModelState.IsValid)
{
db.Entry(whatson).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(whatson);
}