Модель не обновляется, когда возвращается в индекс - PullRequest
0 голосов
/ 25 февраля 2012

Модели заполняются внутри ctor.Когда я нажимаю кнопку «Редактировать», чтобы отредактировать элемент, все работает, и я ясно вижу, что Модель была обновлена ​​в Моделях после вызова TryUpdateModel ().

Однако, когда он перенаправляется в индекс, Модели не 'У меня больше нет изменений.Что случилось?

        // GET: /Contact/    
        public ActionResult Index()
        {
            return View(Models);
        }


        // GET: /Contact/Edit/5    
        public ActionResult Edit(int id)
        {
            var contactModel = Models.Find((x) => x.ID == id);
            return View(contactModel);
        }

        [HttpPost]
        public ActionResult Edit(int id, FormCollection collection)
        {
            var contactModel = Models.Find((x) => x.ID == id);
            if (TryUpdateModel(contactModel))
            {
               return RedirectToAction("Index");   
            }

            return View(contactModel);

        }

Ответы [ 3 ]

0 голосов
/ 25 февраля 2012

Это зависит от того, что вы используете для сохранения ваших моделей (сохранения их в БД).В моем случае я столкнулся с той же проблемой, и мне нужно было убедиться, что я вызвал что-то по методу Update или Save до моего перенаправления, так как мой сеанс модели был ограничен запросом HTTP, перенаправление не вызываломой сеанс должен быть сброшен, а изменения сохранены.

В моем случае я использовал nHibernate и в итоге добавил к нему атрибут, который после завершения действия сбрасывал мои изменения.

0 голосов
/ 25 февраля 2012

HTML-помощники по умолчанию используют ModelState для сообщения. Предполагается, что если не было перенаправления, должна быть ошибка, поэтому покажите «старые» значения.

Вы должны очистить состояние модели (ModelState.Clear ()) или придумать другой шаблон:)

0 голосов
/ 25 февраля 2012

Я полагаю, что вы изменили модель в памяти только после вызова редактирования, но не сохранили изменения в постоянном хранилище (базе данных), поэтому ваш ctor перезагружает ее из состояния несохраненного .

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