Si j'écris comme ça:
form action = "Images" method = "post" enctype = "multipart / form-data"
Ça marche.
Mais dans Razor avec '@' cela ne fonctionne pas. Ai-je fait des erreurs?
@using (Html.BeginForm("Upload", "Upload", FormMethod.Post,
new { enctype = "multipart/form-data" }))
{
@Html.ValidationSummary(true)
<fieldset>
Select a file <input type="file" name="file" />
<input type="submit" value="Upload" />
</fieldset>
}
Ma manette ressemble à ceci:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Upload()
{
foreach (string file in Request.Files)
{
var uploadedFile = Request.Files[file];
uploadedFile.SaveAs(Server.MapPath("~/content/pics") +
Path.GetFileName(uploadedFile.FileName));
}
return RedirectToAction ("Upload");
}
forms
asp.net-mvc-3
razor
kk-dev11
la source
la source
Réponses:
Le code suivant fonctionne correctement:
et génère comme prévu:
D'un autre côté, si vous écrivez ce code dans le contexte d'une autre construction côté serveur comme un
if
ouforeach
vous devez supprimer le@
avant leusing
. Par exemple:En ce qui concerne votre code côté serveur, voici comment procéder :
la source
<form>
balises imbriquées (ce qui n'est pas autorisé en HTML) ou que vous utilisez peut-être du javascript qui détourne la soumission du formulaire normal et fait une requête AJAX qui ne le fait pas. t travailler avec les téléchargements de fichiers.GET
action qui servira Télécharger laUpload.cshtml
vue contenant ce code:public ActionResult Upload() { return View(); }
. Assurez-vous donc d'avoir un contrôleur appeléUploadController
contenant les deux actions de téléchargement: une pour servir le formulaire et l'autre pour traiter la soumission.