Ответ 1
Не существует помощника html для ввода файлов, но что не так, просто делая
@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new {enctype = "multipart/form-data"})) {
<input type='file' name='blah' id='blah' />
}
Есть ли способ определить элементы управления загрузкой файлов с помощью помощника Razor в ASP.NET MVC3?
Не существует помощника html для ввода файлов, но что не так, просто делая
@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new {enctype = "multipart/form-data"})) {
<input type='file' name='blah' id='blah' />
}
В Microsoft.Web.Helpers есть класс FileUpload... http://msdn.microsoft.com/en-us/library/microsoft.web.helpers.fileupload(v=vs.99).aspx
Лучший/единственный способ, который я нашел, это использовать NuGet в VisualStudio. Найдите пакет "microsoft-web-helpers" в онлайн-репозитории. Однако есть одна проблема, с которой я столкнулся. Одна из зависимостей пакета - это Facebook.Helper, который он будет устанавливать одновременно. Он поместит файл под названием "Facebook???. Cshtml" (забыли точное имя) в вашем каталоге AppCode проекта. Проблема в том, что у Facebook???. Cshtml были некоторые зависимости WebMatrix, которых у меня не было, и я не хотел их устанавливать. Просто удаление файла Facebook.cshtml(который я не собираюсь использовать, так или иначе), похоже, решило проблему. После этого я смог компилировать и отлаживать, как обычно, и использовать класс FileUpload.
Вот учебник, который я нашел, который использует его:
http://blog.tallan.com/2011/02/04/using-mvc3-razor-helpers-and-jcrop-to-upload-and-crop-images/
ИСПОЛЬЗОВАНИЕ 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/>
}