我有一个页面,它会将序列化模型发送回控制器。在这种情况下,我使用ajax。
在视图中,我有以下代码:
@Html.Hidden("processViewModel", new Microsoft.Web.Mvc.MvcSerializer().Serialize(Model, SerializationMode.Signed))
控制器看起来像这样:
[HttpPost]
public ActionResult PreviewSample([Deserialize]ProcessViewModel processViewModel /*FormCollection form*/)
这是我的ajax代码:
function GetPreview() {
var json = $('form').serializeObject();
complete = false;
json['ProcessDTO.FileUploadDTO.TempUploadFileDTO.FileInformation.HasHeader'] = false; // $('input[name="ProcessDTO.FileUploadDTO.TempUploadFileDTO.FileInformation.HasHeader"]').is(':checked');
alert($('input[name="ProcessDTO.FileUploadDTO.TempUploadFileDTO.FileInformation.HasHeader"]').is(':checked'));
var jsonData = JSON.stringify(json);
var url = ROOT + '/request/previewsample/';
if (lastPreviewCall != undefined) {
if (lastPreviewCall.status != 200) {
lastPreviewCall.abort();
}
}
lastPreviewCall = $.ajax({
url: url,
type: 'POST',
contentType: 'application/json; charset=utf-8',
// dataType: 'json',
data: jsonData,
otherParam: true,
async: true,
success: function (res) {
$('#preview').find('tbody').find('tr').remove();
var selected = $('.addressType:checked').attr('data-hideClass');
for (var i = 0; i < res.PreviewData.length; i++) {
var entry = '<tr>';
var row = res.PreviewData[i];
for (var u = 0; u < row.length; u++) {
if (u == 0 && selected == 'consumer') {
entry += '<td></td>';
}
else {
entry += '<td><span>' + row[u] + '</span></td>';
}
}
entry += '</tr>';
$('#preview').find('tbody').append(entry)
}
}
});
}
所以现在我有一个复选框,在此模型中默认为true,当我取消选中它时,ajax会将序列化模型发送回控制器,但复选框的值始终为true。
我该如何更新模型?
感谢您的帮助。
答案 0 :(得分:0)
解决方案是添加
TryUpdateModel(processViewModel);
在控制器中,然后一切都很好......