如何将同一路由发送的两个不同对象保存到api



hello community我有两个类,一个叫tax,另一个叫tax detail,我创建了一种不起作用的表单,因为我在该表单中没有使用典型的blazor的editform,我有要填充的输入,在它们的绑定值中有要发送到数据库的值。问题是,在表单中,一些值来自税务类,另一些来自税务类详细信息,所以我不知道如何将对象传递到通往控制器的路径,因为它只接受一个而不接受两个,我想将所有数据一起发送,同时从数据库中填充税务表和税务详细信息表。

这些是类:

public class Impuesto
{
[Key]
public Guid ImpuestoId { get; set; }  
public  ICollection<ImpuestoDetalle> ImpuestosDetalle { get; set; } 

public string ClaveProdServ { get; set; }  
public string ClaveUnidad { get; set; } 
}
public class ImpuestoDetalle
{
[Key]
public Guid ImpuestoDetalleId { get; set; }
public TipoImpuesto TipoImpuesto { get; set; }
public EfectoImpuesto EfectoImpuesto { get; set; }
public decimal Tasa { get; set; } 
}

在形式上,这些绑定值来自税类:

<input type="text" class="form-control" @bind-value="@Impuesto.ClaveProdServ" />

这些相同形式的值来自税类详细信息:

<input type="number" class="form-control" @bind-value="@ImpuestoDetalle.Tasa" />

在这里我保存了表格数据,但我只将税类的值发送到税表,我缺少税类详细信息的值:

@code {
private Impuesto Impuesto = new Impuesto();    
private ImpuestoDetalle ImpuestoDetalle = new ImpuestoDetalle();    
public async Task GuardarImpuesto()
{    
var httpResponse = await repositorio.Post("api/Impuesto", Impuesto);
@if (httpResponse.Error)
{
var body = await httpResponse.GetBody();
await mostrarMensajes.MostrarMensajeError(body);
}
else
{
await mostrarMensajes.MostrarMensajeExitoso("Impuesto Agregado");
navigationManager.NavigateTo("/formulario-impuesto");
}
}
}

您可以将这两个对象组合在一个新模型中,该模型将仅用于客户端-服务器通信中的数据传输。例如:

型号:

public class ImpuestoModelo 
{
public Impuesto Tax { get; set; }
public ImpuestoDetalle TaxDetails { get; set; }
}

该模型可以添加到共享项目中,并在服务器和客户端中重复使用。

SaveTax:

public async Task GuardarImpuesto()
{    
var taxModel = new ImpuestoModelo { Tax = Impuesto, TaxDetails = ImpuestosDetalle };
var httpResponse = await repositorio.Post("api/Impuesto", taxModel);
@if (httpResponse.Error)
{
var body = await httpResponse.GetBody();
await mostrarMensajes.MostrarMensajeError(body);
}
else
{
await mostrarMensajes.MostrarMensajeExitoso("Impuesto Agregado");
navigationManager.NavigateTo("/formulario-impuesto");
}
}

控制器:

[Route("api/Impuesto")]
public async Task<IActionResult> SaveTax(ImpuestoModelo taxModel)
{
// validation
// saving in the db
db.Taxes.Add(taxModel.Tax);
db.TaxDetails.Add(taxModel.TaxDetails);
}

这是用于ASP.NET Core的示例API方法。您可以使用另一个后端,但逻辑是类似的。

相关内容

  • 没有找到相关文章

最新更新