Модель со свойством динамического списка потеряла значения при обратной передаче - PullRequest
0 голосов
/ 10 ноября 2018

У моей модели есть список свойств, а у этого свойства есть другой внутри. Я внес изменения в этот список свойств перед тем, как сделать отправку, но многие свойства не имеют значений, они потеряли.

Основная модель со списками

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 и сохранением значений в моей основной модели.

Это экран: введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...