发布新值后,UpdateModel在我的操作控制器中无效

时间:2011-05-07 15:44:14

标签: asp.net asp.net-mvc-3

以下是我的控制器的一部分:

    [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函数要使用哪个元素。有人可以证实吗?

1 个答案:

答案 0 :(得分:0)

要验证 - 您的存储库是否保留对该模型实例的引用?我看到你调用save - 但是我没有看到save的实现,因为你没有将模型传递给它。