以下是我的控制器的一部分:
[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; }
// ....
}
我的问题是在我的编辑视图页面中发布新值时,使用正确的值很好地触发(发布)名为Edit的操作,但语句 UpdateModel(affaire)没有效果!非常感谢任何帮助。
EDITED
我发现了问题。
我需要改变这一点:
UpdateModel(affaire);
对此:
UpdateModel(affaire,"Affaire");
我想这是因为我的视图模型由几个部分组成,我需要明确告诉我的UpdateModel函数要使用哪个元素。有人可以证实吗?
答案 0 :(得分:0)
要验证 - 您的存储库是否保留对该模型实例的引用?我看到你调用save - 但是我没有看到save的实现,因为你没有将模型传递给它。