6

एक जटिल मॉडल (लेनदेन) को अद्यतन करने के लिए एक दृश्य है। कॉम्प्लेक्स मॉडल में गुण हैं जिनमें एकाधिक अनुलग्नक (फ़ाइलें), हो सकते हैं ताकि उपयोगकर्ता इस फ़ॉर्म में एक साथ कई फाइलें अपलोड कर सकें, और मैं इन फ़ाइलों को डेटाबेस में सहेजने की कोशिश कर रहा हूं।एमवीसी 3, एकाधिक फ़ाइल अपलोड, मॉडल बाध्यकारी

मैंने ब्लॉग पोस्ट http://haacked.com/archive/2010/07/16/uploading-files-with-aspnetmvc.aspx के बाद सर्वर, पर कई फाइलें सफलतापूर्वक पोस्ट की हैं।

हालांकि इन फ़ाइलों को सहेजने के लिए, ताकि मैं ट्रैक कर सकूं कि कौन सी फाइलें जटिल मॉडल (लेनदेन) की वस्तु से संबंधित हैं और इसलिए उन्हें बाद में उपयुक्त स्थानों पर दिखाएं, मुझे अपलोड की गई फ़ाइल को जोड़ने के लिए कुछ तरीका चाहिए ऑब्जेक्ट यह संबंधित है, लेकिन चूंकि सभी फाइलें 'फाइल' नाम से आती हैं, मुझे नहीं पता कि मैं यह काम कैसे कर सकता हूं।

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

    public virtual PurchaseRequisition PurchaseRequisition { get; set; } 

    public virtual Evaluation Evaluation { get; set; } 
} 

जटिल मॉडल के गुण::

यहाँ जटिल मॉडल सरल है

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

उत्तर

8

खरीद के लिए ध्यान में रखते हुए अलग अनुभाग बनाएं:

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; } 
} 

यहाँ नियंत्रक है आवश्यकताएं और बोली परिणाम। कुछ इस तरह:

<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> 

तो फिर तुम इस तरह एक कार्रवाई हस्ताक्षर होगा:

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

कि पूरी तरह से काम किया। धन्यवाद!! – ljustin

संबंधित मुद्दे