Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

123
Visualizações
Cree una clase de JavaScript que contenga la lista y pásela al controlador MVC

Esta es la continuación de aquí

¿Cuál es la forma correcta de crear una clase en JavaScript y pasarla al controlador MVC?

 public class VesselDetail { public string VesselName { get; set; } public string VesselData { get; set; } } public class MainModel { public List<VesselDetail> VesselDetails { get; set; } }

He creado modelos de JavaScript de la siguiente manera

 class VesselDetail { VesselName; VesselData; } class VesselDetails { constructor() { this.VesselDetails = []; } addVessel(VesselName,VesselData) { let p = new VesselDetail(); p.VesselName= VesselName; p.VesselData= VesselData; this.VesselDetails.push(p); return p; } } class MainModel { VesselDetails = {}; }

En mi evento de clic de botón, vincularé lo requerido y lo pasaré al controlador MVC de la siguiente manera

 let model= new MainModel(); let vesselDetail = new VesselDetails(); vesselDetail.addVessel("vesselName1", "vessel desc"); vesselDetail.addVessel("vesselName2", "vessel desc1"); model.VesselDetails= vesselDetail; $.ajax({ url: url, type: 'POST', async: false, data: '{mainModel: ' + JSON.stringify(model) + '}', contentType: 'application/json; charset=utf-8', dataType: 'json', success: function (result) { }, error: function (request) { } });

Pero en el controlador VesselDetails se vuelve nulo, ¿cuál era la forma correcta de pasar la lista a mvc desde JavaScript?

@sarga

Aquí está mi clase c # según la discusión

 Public class Attachment { Public string FileName {get;set;} Public string FileType {get;set;} } Public class Report { Public string ReportName {get;set;} Public List<Attachment> Attachments {get;set;} }

¿Cuál puede ser el equivalente en js y enviarlo al controlador mvc?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Desafortunadamente, tiene un error en sus clases de JavaScript: doble VesselDetails. Ofrezco usar estas clases, este es un estilo más orientado a objetos.

 class VesselDetail { constructor(vesselName, vesselData) { this.VesselName = vesselName; this.VesselData = vesselData; } VesselName; VesselData; } class MainModel { VesselDetails=[]; addVesselDetails(...args) { this.VesselDetails = args; } }

ajax

 let model = new MainModel(); //using special function model.addVesselDetails( new VesselDetail("vesselName1", "vessel desc") ,new VesselDetail("vesselName2", "vessel desc2") ); //or directly model.VesselDetails.push( new VesselDetail("vesselName1", "vessel desc"), new VesselDetail("vesselName2", "vessel desc2") ); $.ajax({ url: url, type: 'POST', async: false, data: JSON.stringify(model), contentType: 'application/json; charset=utf-8', dataType: 'json', success: function (result) { }, error: function (request) { } });

acción

 public JsonResult CreateVessel([FromBody]MainModel mainModel) { // some processing return new JsonResult ( mainModel.VesselDetails[0].VesselName ); }

ACTUALIZAR

La clase de informe me parece muy parecida a la clase MainModel

 class Attachment { constructor(fileName, fileType) { this.FileName = fileName; this.FileType = fileType; } FileName; FileType; } class Report { Attachments = []; addAttachments(...args) { this.Attachments = args; } }

y puede crear instancias de la misma manera que está utilizando MainModel

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda