I need I have several invoice details in my view and I need to send those details to the controller to save them:
View: (I have two Details like this :)
<tr id="Registrodeproducto">
<td>
<select name="Detallefacturas.IDProducto" class="form-control">
@foreach (var Itemproducto in Model.ListaProductos)
{
<option value="@Itemproducto.IDProducto">@Itemproducto.Nombre</option>
}
</select>
</td>
<td>@Html.TextBoxFor(model => model.Detallefacturas.IDProducto, new { @class = "form-control input-sm", placeholder = "Referencia", @readonly = 1, @required = 1 })</td>
<td>@Html.TextBoxFor(model => model.Detallefacturas.Cantidad, new { @class = "form-control input-sm", placeholder = "Cantidad", @required = 1 })</td>
<td>@Html.TextBoxFor(model => model.Detallefacturas.Precio, new { @class = "form-control input-sm", placeholder = "Precio Venta Unitario", @required = 1 })</td>
<td>@Html.TextBoxFor(model => model.Detallefacturas.Subtotal, new { @class = "form-control input-sm", placeholder = "Subtotal", @readonly = 1, @required = 1 })</td>
<td>
<a href="#" class="btn btn-success" title="Agregar Producto"><span class="glyphicon glyphicon-plus"></span></a>
<a href="#" class="btn btn-danger" title="Eliminar Producto"><span class="glyphicon glyphicon-remove"></span></a>
</td>
</tr>
Everything works without problems except that the list only comes a detail of two that I have in sight, (Only I get the first detail, how can I solve it?)
public ActionResult Create(FacturaViewModels ModeloFactura)
{
//Validamos si se cumplen las validaciones del modelo
//Creamos una variable de tipo numeraciones que va a contener en nuevo nuemro de factura
//esa variables es igual a una busqueda donde el IDNuemeracion sea iguial al que trajo de la vista
Numeraciones NuevaFactura = db.Numeraciones.Where(item => item.IDNumeracion == ModeloFactura.Facturas.IDNumeracion).FirstOrDefault();
Facturas IdFacturaGuardado = db.Facturas.OrderByDescending(f => f.IDFactura).First();
ModeloFactura.Facturas.IDEstado = 1;
ModeloFactura.Facturas.Usuario = "UsuarioPruebas";
//Utilizamos los datos que tenemos del modelo de numeraciones para crear el nuemero neuvo
ModeloFactura.Facturas.NumeroFactura = NuevaFactura.Prefijo + (NuevaFactura.NumeroInicial);
ModeloFactura.Facturas.Fecha = DateTime.Now;
ModeloFactura.Facturas.FechaVencimiento = DateTime.Now;
db.Facturas.Add(ModeloFactura.Facturas);
List<DetalleFacturas> Detalle = new List<DetalleFacturas>();
Detalle.Add(ModeloFactura.Detallefacturas);
foreach (var item in Detalle)
{
ModeloFactura.Detallefacturas.IDFactura = ModeloFactura.Facturas.IDFactura;
ModeloFactura.Detallefacturas.Subtotal = ModeloFactura.Detallefacturas.Cantidad * ModeloFactura.Detallefacturas.Precio;
db.DetalleFacturas.Add(ModeloFactura.Detallefacturas);
}
//guardamos los cambios en la base datos
db.SaveChanges();
return RedirectToAction("Index");
}
ViewModels Code: public class FacturaViewModels { public Invoices Invoices {get; set; }
public List<DetalleFacturas> ListaDetalleFacturas { get; set; }
public DetalleFacturas Detallefacturas { get; set; }
public List<Numeraciones> ListaNumeraciones { set; get; }
public List<Entidades> ListaEntidades { set; get; }
public List<FormasPagos> ListaFormasPago { set; get; }
public List<Estados> ListaEstado { set; get; }
public List<Productos> ListaProductos { get; set; }
}