У моей модели есть список свойств, а у этого свойства есть другой внутри.
Я внес изменения в этот список свойств перед тем, как сделать отправку, но многие свойства не имеют значений, они потеряли.
Основная модель со списками
public class PedidosViewModel : BaseFormViewModel<long>
{
//Main properties here
public List<PedidosDetalleViewModel> PedidosDetalle { get; set; }
}
public class PedidosDetalleViewModel
{
public long Id { get; set; }
public long IdPedido { get; set; }
public long IdEstiloCombinacion { get; set; }
public string Combinacion { get; set; }
public string Descripcion { get; set; }
[Required]
[RegularExpression(@"^[0-9]*$", ErrorMessage = "La Cantidad debe ser numérico entero")]
public int CantidadPares { get; set; } = 0;
public decimal Precio { get; set; }
public decimal PrecioMoneda { get; set; }
public decimal Importe { get; set; }
public decimal ImporteMoneda { get; set; }
public int Estatus { get; set; }
public string EstatusStr { get; set; }
public List<PedidosDetalleCorridaViewModel> PedidosDetalleCorrida { get; set; }
}
public class PedidosDetalleCorridaViewModel
{
public long Id { get; set; }
public long IdPedidoDetalle { get; set; }
[StringLength(20)]
public string Punto { get; set; }
[StringLength(20)]
public string Valor { get; set; }
[RegularExpression(@"^[0-9]*$", ErrorMessage = "La Cantidad debe ser numérico entero")]
public int CantidadPares { get; set; } = 0;
}
В частичном представлении с подробностями списка, которые у меня есть:
@{ int rowNum = 0; }
@for (int j = 0; j < Model.PedidosDetalle.Count(); j++)
{
<tr>
<td>
@(rowNum += 1)
@Html.HiddenFor(m => m.PedidosDetalle[j].Id)
@Html.HiddenFor(m => m.PedidosDetalle[j].IdEstiloCombinacion)
@Html.HiddenFor(m => m.PedidosDetalle[j].IdPedido)
@Html.HiddenFor(m => m.PedidosDetalle[j].Combinacion)
@Html.HiddenFor(m => m.PedidosDetalle[j].Descripcion)
@Html.HiddenFor(m => m.PedidosDetalle[j].Precio)
@Html.HiddenFor(m => m.PedidosDetalle[j].PrecioMoneda)
@Html.HiddenFor(m => m.PedidosDetalle[j].Importe)
@Html.HiddenFor(m => m.PedidosDetalle[j].ImporteMoneda)
@Html.HiddenFor(m => m.PedidosDetalle[j].Estatus)
@Html.HiddenFor(m => m.PedidosDetalle[j].EstatusStr)
@Html.HiddenFor(m => m.PedidosDetalle[j].CantidadPares)
@for (int i = 0; i < Model.PedidosDetalle[j].PedidosDetalleCorrida.Count(); i++)
{
@Html.HiddenFor(m => m.PedidosDetalle[j].PedidosDetalleCorrida[i].Id)
@Html.HiddenFor(m => m.PedidosDetalle[j].PedidosDetalleCorrida[i].IdPedidoDetalle)
@Html.HiddenFor(m => m.PedidosDetalle[j].PedidosDetalleCorrida[i].Punto)
@Html.HiddenFor(m => m.PedidosDetalle[j].PedidosDetalleCorrida[i].Valor)
@Html.HiddenFor(m => m.PedidosDetalle[j].PedidosDetalleCorrida[i].CantidadPares)
}
</td>
<td>@Html.DisplayFor(m => m.PedidosDetalle[j].Combinacion)</td>
<td>@Html.DisplayFor(m => m.PedidosDetalle[j].Descripcion)</td>
<td>@Html.DisplayFor(m => m.PedidosDetalle[j].CantidadPares)</td>
<td>@Html.DisplayFor(m => m.PedidosDetalle[j].PrecioMoneda)</td>
<td>@Html.DisplayFor(m => m.PedidosDetalle[j].ImporteMoneda)</td>
<td>@Html.DisplayFor(m => m.PedidosDetalle[j].EstatusStr)</td>
<td>
<a class="btn btn-md btn-primary" onclick="CargarDetalle(@Model.PedidosDetalle[j].Id)" href="javascript:void(0);"><i class="fa fa-pencil"></i> Editar</a>
</td>
<td>
<a onclick="EliminarPedidoDetalle(@Model.PedidosDetalle[j].Id)" href="javascript:void(0);"><i class="glyphicon glyphicon-remove-sign icons-app icons-md icons-app-danger"></i></a>
</td>
</tr>
}
как вы можете видеть множество скрытых элементов управления только для сохранения значений при обратной передаче, но такие свойства, как Id, Importe, Estatus потеряли свои значения. Я думаю использовать сеанс (потому что .net MVC не имеет состояний просмотра) для временного сохранения моего подробного списка со всеми значениями и списка редактирования значений, если мне нужно непосредственно перед сохранением изменений.
Я использую javascript для загрузки частичного представления с помощью ajax-вызова для передачи всех форм , сериализованных каждый раз, когда я добавляю новую запись в список.
Существует решение с MVC, Ajax и сохранением значений в моей основной модели.
Это экран:
введите описание изображения здесь