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方法。您可以使用另一个后端,但逻辑是类似的。