Como eu mapearia corretamente meus valores de status de entrega Enum de meu modelo de entrega para entrega ViewModel?

mustang00

Atualmente, estou tendo problemas para salvar os Enumvalores em meu banco de dados porque não estou mapeando corretamente de meu ViewModelpara meu Modele vice-versa. O problema reside quando tento Editum existente Delivery. Consegue o status, mas quando tento save, não saveo novo status.

Esta linha delivery.status = model.Status;não funciona e não sei se devo configurar Enumno ViewModeltambém.

Estou bastante perplexo porque não tenho ideia de como fazer isso. Eu ainda sou um iniciante e estou tentando entender esse desenvolvimento, alguém pode sugerir uma solução ou me apontar na direção certa?

Ver modelo:

public enum Status
{
    Dispatched, Delayed, Delivered
}
public class DeliveryVM
{
    public int? ID { get; set; }
    public int DriverID { get; set; }

    public Status Status { get; set; }
}

Controlador:

public ActionResult Edit(int? id)
{
    ....
    Delivery delivery = db.Deliverys.Find(id);
    // Initialize the view model
    DeliveryVM model = new DeliveryVM()
    {
        ID = delivery.DeliveryID,
        DriverID = delivery.DriverID,
        Status = model.Status; // this doesn't work
    };
    return View(model);
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(DeliveryVM model)
{

    // Get the data model based on the ID of the view model
    Delivery delivery = db.Deliverys.Find(model.ID);
    // Map the view model properties to the data model
    delivery.DriverID = model.DriverID;
    delivery.status = model.Status; // this doesn't work

   // Mark as modified and save
   ....
   return RedirectToAction("Details", new { id = delivery.DeliveryID });
}

Modelo:

public enum Status
{
   Dispatched, Delayed, Delivered
}
public class Delivery
{
    public int DeliveryID { get; set; }
    [Display(Name = "Driver")]
    public int DriverID { get; set; }
    public Status Status { get; set; }
}

Ver código:

            <div class="form-group">
                @Html.LabelFor(model => model.Status, htmlAttributes: new { @class = "control-label col-md-2" })
                <div class="col-md-10">
                    @Html.EnumDropDownListFor(model => model.Status, htmlAttributes: new { @class = "form-control", @id="dropdown" })
                    @Html.ValidationMessageFor(model => model.Status, "", new { @class = "text-danger" })
                </div>
            </div>

Este é o erro que recebo nesta linha delivery.status = model.Status;:

insira a descrição da imagem aqui

user3559349

Você declarou 2 separados enumspara Status, um na montagem para seu modelo de dados e um na montagem para seu modelo de vista. Eles são tipos diferentes e não podem ser convertidos de um para o outro. Você pode fazer com que o modelo de visualização se refira ao enum Statusna montagem do modelo de dados, ou você pode mapear entre eles usando o Enum.TryParse()método, por exemplo, para mapear do modelo de dados para o modelo de visualização no método GET

HealthHabitat.ViewModels.Status status = HealthHabitat.ViewModels.Status.Dispatched;
Enum.TryParse(delivery.Status.ToString(), out status);
DeliveryVM model = new DeliveryVM()
{
    ID = delivery.DeliveryID,
    DriverID = delivery.DriverID,
    Status = status;
};

e então no método POST, faça ao contrário

HealthHabitat.Models.Status status = HealthHabitat.Models.Status.Dispatched;
Enum.TryParse(model.Status.ToString(), out status);
delivery.Status = status;

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Status de entrega AWS SNS

Pacotes de entrega no Go?

Regulador de entrega RabbitMQ

Amazon SNS - Enviando SMS, status de entrega

Dados de entrega de pai para filho

Como obter o status da data de entrega no SQL?

Stripe Payments para uma empresa de entrega

Como valorizar a entrega de outra aula no android?

Como replicar a entrega de saída no SAP?

Como implementar um "comprovante de entrega" para solicitações http

SendGridApiClient obter resposta de entrega

Entrega de mensagem ordenada SCTP

Entrega de argumento C # InstaSharper

Entrega garantida de pacotes UDP

Renomeie "Endereço de entrega para" Endereço de entrega "no Woocommerce

Algoritmo para pedidos empilhados na entrega de comida (coleta e entrega)

Twilio não mostra o status de entrega

Endereço de cobrança duplicado para endereço de entrega

Entrada de valor de entrega para função

Como remover a etapa de envio de entrega no prestashop 1.6.1?

adicionar status de pedido personalizado em Imprimir fatura e notas de entrega para o plugin WooCommerce

Como posso verificar o status de entrega da campanha na API de marketing do Facebook

Semântica de entrega de mensagem Kafka

Forçar entrega de eventos de stream

Garantias de entrega de mensagens Akka

Xamarin android-Como detectar evento de entrega de mensagens de primeiro plano do FCM de entrega

Xamarin android-Como detectar evento de entrega de mensagens de primeiro plano do FCM de entrega

Hybris: como criar uma promoção "Modo de entrega de alteração de limite de pedido (entrega gratuita)"

Gerenciar entrega de mensagens JMS para vários servidores