ASP.NET MVC 4, C# HttpPostedFileBase, Wie Speichere ich die Datei
Modell
public partial class Assignment
{
public Assignment()
{
this.CourseAvailables = new HashSet<CourseAvailable>();
}
public string AssignmentID { get; set; }
public Nullable<System.DateTime> SubmissionDate { get; set; }
public string Status { get; set; }
public Nullable<decimal> Mark { get; set; }
public string Comments { get; set; }
public string FileLocation { get; set; }
public virtual ICollection<CourseAvailable> CourseAvailables { get; set; }
}}
Controller
public ActionResult Create(Assignment assignment)
{
if (ModelState.IsValid)
{
db.Assignments.Add(assignment);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(assignment);
}
Ansicht
<div class="editor-field">
<%: Html.TextBoxFor(model => model.FileLocation, new { type="file"})%>
<%: Html.ValidationMessageFor(model => model.FileLocation) %>
</div>
Wie Speichere ich eine Datei, wenn ich wollte, um zu speichern Sie die Datei in den server/Pfad-Ordner und in der Datenbank habe ich nur wollen, speichern Sie den Pfad-Namen/string.
InformationsquelleAutor WeakTaenie | 2014-08-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
können Sie Datei hochladen und speichern, dessen url in der Datenbank Tabelle wie diese:
Anzeigen:
Aktion:
Details:
Zum besseren Verständnis finden Siedieses gute Artikel Hochladen einer Datei (Oder Dateien) Mit ASP.NET MVC
Die Validierung fehlgeschlagen ist, für eine oder mehrere Personen. Siehe 'EntityValidationErrors' - Eigenschaft für weitere details. was caue dieser Fehler passieren? dieser Fehler Passiert, Wenn ich ein Insert;
db.SaveChanges(); <<<<dbEntityValidationException war unhandled by user code
Die Validierung fehlgeschlagen ist, für eine oder mehrere Personen. Siehe 'EntityValidationErrors' - Eigenschaft für weitere details. Beschreibung: Eine nicht behandelte Ausnahme ist aufgetreten während der Ausführung der aktuellen Webanforderung. Bitte überprüfen Sie die Stapelüberwachung für weitere Informationen über den Fehler und wo Sie Ihren Ursprung in den code. Exception Details: System.Daten.Entität.Die Validierung.DbEntityValidationException: Überprüfung fehlgeschlagen für eine oder mehrere Entitäten. Siehe 'EntityValidationErrors' - Eigenschaft für weitere details. Source Fehler:
es ist wahrscheinlich irgendein Feld ist obligatorisch ist wird null in der Datenbank
InformationsquelleAutor Ehsan Sajjad
Hier ist, wie ich es gemacht habe:
Anzeigen.cs
War ich mit
HomeController
, so erstellen Sie dieUpload
Funktion gibt. Ich bin auch, wie Sie möglicherweise speichern Sie die Datei Inhalt in die Datenbank, nicht nur die Lage, und der folgende code nutzt dieAssignment
Modell, das vorgesehen war, aber ich werde auch zeigen, wie ich es gespeichert, um die Datenbank in meinem Fall mit einem Modell, das ich erstellt für meine TabelleITEM_ATCHMT
.Sollten Sie nicht zu Durchlaufen haben, in einem Modell - & übergeben Sie es zurück, wenn alles, was Sie haben, ist ein FileUpload-Steuerelement auf der Seite und nicht das Auffüllen der Daten auf den anzeigen, so dass diese Funktion nicht, und meine Ansicht nicht verwenden Sie ein Modell - yours kann unterschiedlich sein und möchten Sie vielleicht, um Ihre Modell weitergegeben werden, zurück, wenn Sie Ihre Ansicht.
Ich meine für mehrere Objekte gebucht werden, zu einer Zeit, und so hatte ich
List<ViewDataUploadFilesResult>
erhalten, dass Ihre Daten und bekommen würde Durchlaufen im Prozess der Speicherung von einzelnen Dateien und deren Metadaten in der Datenbank. Sie können es verwenden, zu speichern Sie einfach eine Datei zu einem Zeitpunkt, obwohl, so habe ich den code Hinzugefügt und kommentiert Sie die Teile für mehrere Dateien. Hoffentlich ist es nicht zu verwechseln jedermann - nur 2 unterschiedliche Möglichkeiten, die gleiche Sache zu tun, am Ende.HomeController.cs
Zusätzliche Modell
ViewDataUploadFilesResult.cs
Für mich, anstatt das ganze ViewModel, das ist eine wirkliche Modell für meine Anlagen Tabelle:
Und sagen wollte ich assoziiere es mit diesem Artikel:
Speichern von Daten mithilfe von Entity Framework, die Sie brauchen nur zu füllen, Modell, führen Sie dann eine
.SaveChanges()
auf Ihren Kontext:Und wenn
ITEM_ID
mit auto-increment:InformationsquelleAutor vapcguy