Wenn ich so schreibe:
form action = "Images" method = "post" enctype = "mehrteilig / Formulardaten"
Es klappt.
Aber in Razor mit '@' funktioniert es nicht. Habe ich Fehler gemacht?
@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>
}
Mein Controller sieht folgendermaßen aus:
[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
quelle
quelle
Antworten:
Der folgende Code funktioniert einwandfrei:
und generiert wie erwartet:
Auf der anderen Seite , wenn Sie diesen Code in Zusammenhang mit anderem Server - Seite Konstrukt wie ein schreiben
if
oderforeach
sollten Sie das entfernen ,@
bevor derusing
. Beispielsweise:In Bezug auf Ihren serverseitigen Code gehen Sie wie folgt vor :
quelle
<form>
Tags haben (was in HTML nicht zulässig ist), oder Sie verwenden möglicherweise Javascript, das die normale Formularübermittlung missbraucht und eine AJAX-Anforderung ausführt, die dies nicht tut. t funktioniert mit Datei-Uploads.GET
Stellen Sie im ersten Fall sicher, dass Sie über eine Upload-Aktion verfügen , die derUpload.cshtml
Ansicht mit diesem Code dient :public ActionResult Upload() { return View(); }
. Stellen Sie also sicher, dass Sie einen Controller namens habenUploadController
, der die beiden Upload-Aktionen enthält: eine zum Bereitstellen des Formulars und die andere zum Verarbeiten der Übermittlung.