Элементы управления загрузкой файлов с помощью Razor в ASP.NET MVC3

Есть ли способ определить элементы управления загрузкой файлов с помощью помощника Razor в ASP.NET MVC3?

Ответы

Ответ 1

Не существует помощника html для ввода файлов, но что не так, просто делая

@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new {enctype = "multipart/form-data"})) {
    <input type='file' name='blah' id='blah' />
}

Ответ 2

В 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/

Ответ 3

ИСПОЛЬЗОВАНИЕ 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/>
    }