6

Existe la posibilidad de actualizar un modelo complejo (Transacción). El modelo complejo tiene propiedades que pueden tener múltiples archivos adjuntos (archivos), , de modo que el usuario puede cargar varios archivos simultáneamente en este formulario, y estoy tratando de guardar estos archivos en la base de datos.MVC3, carga de varios archivos, vinculación del modelo

He publicado con éxito varios archivos en el servidor, siguiendo la publicación del blog http://haacked.com/archive/2010/07/16/uploading-files-with-aspnetmvc.aspx.

Sin embargo, para guardar estos archivos, de modo que pueda hacer un seguimiento de qué archivos pertenecen a qué objeto del modelo complejo (Transacción) y mostrarlos luego en los lugares apropiados, necesito asociar algún archivo cargado a el objeto al que pertenece, pero dado que todos los archivos están bajo el nombre 'archivos', no sé cómo puedo hacer que esto funcione.

Aquí se simplifica modelo complejo:

public class Transaction 
{ 
    [Key] 
    public int Id { get; set; } 

    public virtual PurchaseRequisition PurchaseRequisition { get; set; } 

    public virtual Evaluation Evaluation { get; set; } 
} 

Propiedades de modelo complejo:

public class PurchaseRequisition 
{ 
    [Key, ForeignKey("Transaction")] 
    public int TransactionId { get; set; } 

    public virtual Transaction Transaction { get; set; } 

    [Display(Name = "Specifications/Requisitioner's Notes")] 
    public virtual ICollection<Attachment> SpecsRequisitionerNotesFiles { get; set; } 
} 

public class Evaluation 
{ 
    [Key, ForeignKey("Transaction")] 
    public int TransactionId { get; set; } 

    public virtual Transaction Transaction { get; set; } 

    public virtual ICollection<Attachment> BidResultsFiles { get; set; } 
} 

public abstract class Attachment 
{ 
    [Key] 
    public int Id { get; set; } 

    public string FileName { get; set; } 

    public string FileExtension { get; set; } 

    public byte[] Data { get; set; } 

    public Boolean Deleted { get; set; } 
} 

Aquí es el controlador:

[HttpPost] 
public ActionResult Create(TransactionViewModel model, IEnumerable<HttpPostedFileBase> files) 
{ //save to database } 

Respuesta

8

crear secciones separadas en la vista para la compra requisiciones y resultados de ofertas Algo como esto:

<form action="" method="post" enctype="multipart/form-data"> 

    <h3>Purchase Requistions</h3> 
    <label for="file1">Filename:</label> 
    <input type="file" name="purchasereqs" id="file1" /> 

    <label for="file2">Filename:</label> 
    <input type="file" name="purchasereqs" id="file2" /> 

    <h3>Bid Results</h3> 
    <label for="file3">Filename:</label> 
    <input type="file" name="bidresults" id="file3" /> 

    <label for="file4">Filename:</label> 
    <input type="file" name="bidresults" id="file4" /> 

    <input type="submit" /> 
</form> 

allí tendría que tener una firma acción como esta:

[HttpPost] 
public ActionResult Create(
    TransactionViewModel model, 
    IEnumerable<HttpPostedFileBase> purchasereqs, 
    IEnumerable<HttpPostedFileBase> bidresults) 
{ 
    //save to database 
} 
+0

Eso funcionó a la perfección. ¡¡Gracias!! – ljustin

Cuestiones relacionadas