PartialView не очищается после обратной передачи ajax

У меня происходит странная вещь.

У меня есть PartialView с 3 полями. Я делаю сообщение jQuery ajax для своего результата действия, и если модель проходит проверку, я сохраняю запись. Затем я также устанавливаю модель пустой и передаю ее обратно в представление как частичное представление.

    public ActionResult jQueryAddComment(Comment comment)
    {
        if (ModelState.IsValid)
        {
            //do stuff here
            comment = new Comment();
        }

        return PartialView("AddNewComment", comment);
    }

Когда я возвращаюсь на страницу, мой JS заменяет содержимое div комментариев на html из нового частичного представления.

    function submitComment() {
        $.post('/Home/jQueryAddComment', { forumItemId: $('#id').val(), owner: $('#owner').val(), text: tinyMCE.get('text').getContent(), emailAddress: $('#emailAddress').val() }, function (result) {
            alert(result);
            $('.AddNewComment').html(result);
        });            
    }

Однако, когда страница отрисовывается, значения возвращаются на свои места. Я вижу, что в представление передается пустая модель, так почему мои предыдущие значения все еще там?

Даже предупреждение показывает значения на месте, даже если я передаю пустой объект частичному представлению в контроллере.

изменить

Я должен упомянуть, что я не могу очистить поля в JS страницы, так как я хочу использовать один и тот же код для отображения ошибок, а также успешных запросов.


person griegs    schedule 16.08.2010    source источник


Ответы (2)


Стандартные помощники HTML изучают ModelState и ViewData на предмет значений, прежде чем использовать значения, которые вы передали помощнику.

Это может помочь: Как очистить текстовые поля, определенные с помощью Помощники MVC HTML

person John Farrell    schedule 16.08.2010
comment
@griegs, хорошо, рад, что это было полезно. Пришлось погрузиться в исходный код MVC, когда это случилось со мной. - person John Farrell; 17.08.2010

Используйте ModelState.Clear() перед возвратом новой пустой модели как частичного вида, например:

if (ModelState.IsValid)
{
    //your save logic

    ModelState.Clear();
    comment = new Comment();
}

return PartialView("AddNewComment", comment);
person Safran Ali    schedule 13.05.2011