www update tools packs net mvc4 mvc language instalar form asp forms asp.net-mvc-3 razor

forms - update - mvc 5 razor ajax



Cómo escribir "Html.BeginForm" en Razor (1)

El siguiente código funciona bien:

@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> }

y genera según lo esperado:

<form action="/Upload/Upload" enctype="multipart/form-data" method="post"> <fieldset> Select a file <input type="file" name="file" /> <input type="submit" value="Upload" /> </fieldset> </form>

Por otro lado, si está escribiendo este código dentro del contexto de otro constructo del lado del servidor, como un if o foreach , debe eliminar el @ antes de using . Por ejemplo:

@if (SomeCondition) { 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> } }

En lo que respecta a su código del lado del servidor, a continuación le mostramos cómo proceder :

[HttpPost] public ActionResult Upload(HttpPostedFileBase file) { if (file != null && file.ContentLength > 0) { var fileName = Path.GetFileName(file.FileName); var path = Path.Combine(Server.MapPath("~/content/pics"), fileName); file.SaveAs(path); } return RedirectToAction("Upload"); }

Si escribo así:

form action = "Imágenes" method = "post" enctype = "multipart / form-data"

funciona.

Pero en Razor con ''@'' no funciona. ¿Cometí algún error?

@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> }

Mi controlador se ve así:

[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"); }