UpdateModel не влияет на мой контроллер действий после публикации новых значений - PullRequest
0 голосов
/ 07 мая 2011

Ниже приведена часть моего контроллера:

    [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, какой элемент использовать. Кто-нибудь может подтвердить?

1 Ответ

0 голосов
/ 07 мая 2011

Для проверки - сохраняет ли ваш репозиторий ссылку на этот экземпляр модели? Я вижу, вы вызываете save - но я не вижу реализации сохранения, поскольку вы не передаете ему модель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...