Est-il possible de définir les contrôles de téléchargement de fichier à l'aide d'un assistant Razor dans ASP.NET MVC3?
Il n’existe pas d’aide HTML pour les entrées de fichiers, mais qu’est-ce qui ne va pas?
@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new {enctype = "multipart/form-data"})) {
<input type='file' name='blah' id='blah' />
}
Il existe une classe FileUpload dans Microsoft.Web.Helpers ... http://msdn.Microsoft.com/en-us/library/Microsoft.web.helpers.fileupload(v=vs.99).aspx
Le meilleur/seul moyen que j'ai trouvé pour l'obtenir est d'utiliser NuGet dans VisualStudio. Recherchez le package "Microsoft-web-helpers" dans le référentiel en ligne. Il y a cependant un problème que j'ai rencontré. Une des dépendances du paquet est Facebook.Helper, qu'il installera en même temps. Il placera un fichier appelé "Facebook ???. Cshtml" (oublié le nom exact) dans le répertoire AppCode de votre projet. Le problème est que Facebook ???. Cshtml avait des dépendances WebMatrix que je n'avais pas et que je ne voulais pas installer. Supprimer simplement le fichier Facebook.cshtml (que je n'allais pas utiliser de toute façon) semblait résoudre le problème. Après cela, j'ai pu compiler et déboguer comme d'habitude et utiliser la classe FileUpload.
Voici un tutoriel que j'ai trouvé qui l'utilise:
http://blog.tallan.com/2011/02/04/using-mvc3-razor-helpers-and-jcrop-to-upload-and-crop-images/
UTILISATION DU RASOIR
@*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/>
}