Поля все еще содержат данные формы, когда новый экземпляр модели передается в частичное представление
У меня есть частичное представление, которое отправлять на сервер с помощью 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());