Поля все еще содержат данные формы, когда новый экземпляр модели передается в частичное представление

У меня есть частичное представление, которое отправлять на сервер с помощью jquery. Публикация работает. Однако при возврате я возвращаю частичное представление результата с пустой моделью (новая модель), но возвращаемый HTML все еще содержит данные, ранее опубликованные. Есть идеи по очистке данных о возврате?

$("#btnSend").click(function (e) {
    e.preventDefault();

    if($('#frmCompose').valid()) {
        $.ajax({
            type: "POST",
            url: '@Url.Action("PartialCompose", "Message")',
        dataType: "html",
        data: $('#frmCompose').serialize(),
        success: function (result) {
            $("#divTab2").html(result);
        },
        error: function (xhr, s, e) {
            alert('Error');
            alert(xhr.responseText);
        }
        });
    }        
});

Вот действие:

    [SessionExpireFilterAttribute]
    [HttpPost] // POST: /message/partialcompose
    public PartialViewResult PartialCompose(_MessageExt model)
    {
        _MessageExtDAL __DAL = new _MessageExtDAL(base.LoginTimeZoneMin);
        try
        {
            model.MessageId = 0;
            model.AccountId = base.LoginUser.AccountId;
            model.EditBy = base.LoginUser.UserId;

            __DAL.Send(model, Config.SQLConn);
        }
        catch (Exception ex)
        {
            base.Prompt = ex.Message;
        }
        finally
        {
            __DAL = null;
        }
        return PartialView(new _MessageExt());
    }

1 ответ

Решение

Это связано с тем, что вы возвращаете то же представление непосредственно из действия POST, а значения формы все еще существуют в ModelState,

Это сделано специально для отображения ошибок валидации в сочетании с исходными данными формы. Значения в ModelState имеют более высокий приоритет, чем объекты в объекте модели, передаваемые в представление, поэтому, если оба они существуют, значения в ModelState будет использоваться.

Следующие поля должны быть очищены:

ModelState.Clear();
return PartialView(new _MessageExt());
Другие вопросы по тегам