webentwicklung-frage-antwort-db.com.de

Steuerelemente zum Hochladen von Dateien mit Razor in ASP.NET MVC3

Gibt es eine Möglichkeit, die Steuerelemente zum Hochladen von Dateien mit einem Razor-Helfer in ASP.NET MVC3 zu definieren?

15

Es gibt keinen HTML-Helfer für Dateieingaben, aber was ist falsch daran, nur zu tun

@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new {enctype = "multipart/form-data"})) {
    <input type='file' name='blah' id='blah' />
}
27
Jimmy

Es gibt eine FileUpload-Klasse in Microsoft.Web.Helpers ... http://msdn.Microsoft.com/en-us/library/Microsoft.web.helpers.fileupload(v=vs.99).aspx

Die beste/einzige Möglichkeit, die ich gefunden habe, ist die Verwendung von NuGet in VisualStudio. Suchen Sie im Online-Repository nach dem Paket "Microsoft-web-helpers". Es gibt jedoch ein Problem, auf das ich gestoßen bin. Eine der Abhängigkeiten des Pakets ist Facebook.Helper, das gleichzeitig installiert wird. Es wird eine Datei mit dem Namen "Facebook ???. Cshtml" (den genauen Namen vergessen) im AppCode-Verzeichnis Ihres Projekts abgelegt. Das Problem ist, dass Facebook .cshtml einige WebMatrix-Abhängigkeiten hatte, die ich nicht hatte und nicht installieren wollte. Das Problem konnte durch einfaches Löschen der Datei Facebook.cshtml (die ich sowieso nicht verwenden wollte) behoben werden. Danach konnte ich wie gewohnt kompilieren, debuggen und die FileUpload-Klasse verwenden.

Hier ist ein Tutorial, das es benutzt:

http://blog.tallan.com/2011/02/04/using-mvc3-razor-helpers-and-jcrop-to-upload-and-crop-images/

4
Don

VERWENDUNG VON RAZOR

@*requieres installing Asp helpers / you can do it her from NuGet or logging som admin in packages*@
@using Microsoft.Web.Helpers;
@{
    var fileName = "";
    if (IsPost) {
        var fileSavePath = "";
        var uploadedFile = Request.Files[0];
        fileName = Path.GetFileName(uploadedFile.FileName);
        fileSavePath = Server.MapPath("~/UploadedFiles/" +
          fileName);
        uploadedFile.SaveAs(fileSavePath);
    }
}

      @FileUpload.GetHtml(
        initialNumberOfFiles:1,
        allowMoreFilesToBeAdded:false, 
        includeFormTag:false,
        name: "Upload1",
        uploadText:"Upload")

    @if (IsPost) {
        <span>File uploaded!</span><br/>
    }
0
jarimos