У меня проблема с тем, что скрытые значения в форме не обновляются при возврате нового ActionResult.
Например, пользователь проверит несколько записей и нажмет кнопку «Завершение обновления». Это делает Ajax вызываемым для действия UpdateCompleted, которое устанавливает дату для проверенных записей, и как только вызов Ajax возвращает форму, отправляется форма. После выполнения некоторой логики в методе отправки действия формы, возвращается обновленная модель со значением IsChecked, установленным в false для всех записей в модели, но форма сохраняет предыдущее проверенное значение, поскольку сгенерированный идентификатор ниже имеет то же значение.
Код
<td>
@Html.CheckBoxFor(model => Model.WorkOrderDetails[x].IsChecked)
@Html.HiddenFor(modelItem => Model.WorkOrderDetails[x].IsChecked)
@Html.HiddenFor(modelItem => Model.WorkOrderDetails[x].WorkOrderEntityId)
@Html.HiddenFor(model => model.WorkOrderDetails[x].WorkOrderId)
</td>
Визуализированный HTML
<td>
<input data-val="true" data-val-required="The IsChecked field is required." id="WorkOrderDetails_0__IsChecked" name="WorkOrderDetails[0].IsChecked" type="checkbox" value="true"><input name="WorkOrderDetails[0].IsChecked" type="hidden" value="false">
<input id="WorkOrderDetails_0__IsChecked" name="WorkOrderDetails[0].IsChecked" type="hidden" value="False">
<input id="WorkOrderDetails_0__WorkOrderEntityId" name="WorkOrderDetails[0].WorkOrderEntityId" type="hidden" value="ODU=">
<input id="WorkOrderDetails_0__WorkOrderId" name="WorkOrderDetails[0].WorkOrderId" type="hidden" value="NjQ4OTU3">
</td>
Введите код
@using(@Html.BeginForm("Index", "WorkOrderMaster", FormMethod.Post, new { id = "workOrderMasterForm" }))
{
<div>
<div class="project-buttons">
<div class="btn-group">
<input id="submitCompletion" class="btn btn-success" value="Update Completion" data-submit-url='@Url.Action("UpdateCompleted", "WorkOrderMaster")' />
</div>
</div>
$(function () {
$('#submitCompletion').click(function () {
$.ajax({
type: 'POST',
url: $(this).data('submit-url'),
data: $('#workOrderMasterForm').serialize(),
success: function (data) {
$('#workOrderMasterForm').submit();
}
});
});
});
Я ожидаю, что будут использоваться новые значения из модели, но этого не происходит.
Рекомендуется ли в этой ситуации вручную кодировать входные значения, чтобы избежать использования следующего формата?
ClassName_Index_PropertyName
Заранее благодарим за то, что вы потратили время на рассмотрение этого вопроса.