У меня строго типизированное представление, использующее созданную мной модель представления. У меня есть поле даты в моей модели просмотра, которое представляет собой форматированное отображение свойства моей основной модели. В действии POST Edit (я следовал руководству по ужину для ботаников) параметры int id, FormCollection collection
. Используя свой репозиторий, я ищу модель по идентификатору, и мне остается захватить мои дополнительные свойства модели представления с помощью FormCollection. Должен быть способ лучше? Может быть, просто измените параметры, чтобы принять мою модель просмотра вместо int id? Почему на ужине ботаников это не делается вместо того, чтобы полагаться на UpdateModel ()? Моя UpdateModel неверна из-за того, что не подбирает свойства модели представления и не обновляет их соответствующим образом?
Пример ниже. ValidateInput (false) для моего редактора WYSIWYG
[Authorize(Roles = "Author,Admin"), HttpPost, ValidateInput(false)]
public virtual ActionResult Edit(int id, FormCollection collection)
{
Spotlight spotlight = spotlightRepository.GetSpotlight(id);
try
{
spotlight.ModifiedDate = DateTimeOffset.Now;
// I dont like this line
spotlight.PublishDate = Convert.ToDateTime(collection["PublishDate"]);
UpdateModel(spotlight, "Spotlight");
spotlightRepository.Save();
return RedirectToAction("Details", new { id = spotlight.SpotlightID });
}
catch
{
ModelState.AddRuleViolations(spotlight.GetRuleViolations());
return View(new SpotlightFormViewModel(spotlight));
}
}