Обновление данных модели представления в контроллере не отражается в полях ввода представления - PullRequest
3 голосов
/ 25 августа 2010

У меня есть страница редактирования поста, где вы можете сохранить свои правки или загрузить изображение (несколько отправок в одной форме). При загрузке изображения ссылка на изображение добавляется в область содержимого TinyMCE.

Поля для формы находятся в viewusercontrol (совместно с страницей создания). И viewpage, и usercontrol наследуются от BlogPost, поэтому модель передается напрямую с использованием <% Html.RenderPartial("Fields", Model); %>

Так вот странная вещь; в моем контроллере, когда я добавляю ссылку на изображение к текстовой области, с текстовой областью ничего не происходит в представлении

На моей странице просмотра у меня есть метка для Model.Title, а в пользовательском контроле у ​​меня есть текстовое поле для редактирования Model.Title.

Если я обновлю метку в контроллере - model.Title = "New Title" - обновленные данные модели изменятся для метки на странице просмотра, но не для текстового поля в пользовательском контроле.

Мой контроллер выглядит так:

// /edit/{id}
public ViewResult Edit(int id, BlogPost model, string submit)
    {
        if (ModelState.IsValid)
        {
            switch (submit)
            {
                case "Upload":
                    var files = UploadFiles(Request.Files); // uploading works

                    model.Content += files[0].Link; // model is updated but not cascaded at runtime
                    model.Title = "Test"; // Force a title change to reproduce the issue
                    return View(model);

                default:
                    repository.Update(model);
                    break;
            }
        }

        return View(model);
    }

Есть какие-нибудь идеи относительно того, что это вызывает и как это исправить? Спасибо.

  • Я использую 4.0 и MVC 2

Ответы [ 2 ]

2 голосов
/ 26 августа 2010

Оказывается, что это поведение разработано и на него ответил Фил Хаак:

Возможная ошибка в ASP.NET MVC с заменой значений формы.

Есть также запись в блоге об этом здесь:

HTML-помощники ASP.NET MVC отображают неверное значение!

Для моего сценария (добавление изображения в tinymce)Я думаю, что безопасно очищать ModelState, потому что мы явно добавляем текстовую область и еще не делаем никакой проверки.

0 голосов
/ 25 августа 2010

Есть ли вероятность того, что в представлении верхнего уровня есть код, который изменяет значение Model.Title до вызова RenderPartial?

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