Ниже приведена часть моего контроллера:
[Authorize]
public ActionResult Edit(string IdAffaire)
{
Affaire affaire = this.repository.Retrieve(IdAffaire);
if (affaire == null)
{
return Redirect("~/");
}
var model = new AffaireEditViewModel
{
Affaire = affaire,
Status = repository.RetrieveStatus().Select(o => new SelectListItem { Text = o.Name, Value = o.IdStatus.ToString() }).ToList(),
};
return View(model);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(string idAffaire, AffaireEditViewModel model)
{
Affaire affaire = repository.Retrieve(idAffaire);
if (!ModelState.IsValid)
{
return this.Edit(model.Affaire.IdAffaire);
}
try
{
UpdateModel(affaire);
repository.Save();
return RedirectToAction("Detail", "Affaire", new { idAffaire = idAffaire });
}
catch
{
return View(affaire);
}
}
Ниже мой ViewModel для редактирования:
public class AffaireEditViewModel
{
public Affaire Affaire { get; set; }
public IEnumerable<SelectListItem> Status { get; set; }
}
Ниже моя модель Affaire:
public class Affaire
{
[Key]
public string IdAffaire { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string Username { get; set; }
public Int16? IdStatus { get; set; }
public Int16? IdLabel { get; set; }
// ....
}
Моя проблема заключается в том, что при публикации новых значений на моей странице просмотра редактирования действие «Правка» хорошо запускается (отправка) с правильными значениями, но оператор UpdateModel (affaire) не имеет никакого эффекта! Любая помощь с благодарностью.
EDITED
Я нашел проблему.
Мне нужно изменить это:
UpdateModel(affaire);
На это:
UpdateModel(affaire,"Affaire");
Полагаю, это потому, что моя модель представления состоит из нескольких вещей, и мне нужно явно указать моей функции UpdateModel, какой элемент использовать. Кто-нибудь может подтвердить?