web-dev-qa-db-ja.com

ASP.NETMVC3でRazorを使用したファイルアップロードコントロール

ASP.NET MVC3のRazorヘルパーを使用してファイルアップロードコントロールを定義する方法はありますか?

15

ファイル入力用のhtmlヘルパーはありませんが、実行するだけで何が問題になりますか

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

Microsoft.Web.HelpersにはFileUploadクラスがあります... http://msdn.Microsoft.com/en-us/library/Microsoft.web.helpers.fileupload(v = vs.99).aspx

それを取得するために私が見つけた最良/唯一の方法は、VisualStudioでNuGetを使用することです。オンラインリポジトリでパッケージ「Microsoft-web-helpers」を検索します。しかし、私が遭遇した問題が1つあります。パッケージの依存関係の1つはFacebook.Helperであり、これは同時にインストールされます。プロジェクトのAppCodeディレクトリに「Facebook ???。cshtml」(正確な名前を忘れた)というファイルが配置されます。問題は、Facebook ???。cshtmlに、私が持っていなかった、インストールしたくないWebMatrix依存関係がいくつかあったことです。 Facebook.cshtmlファイル(とにかく使用しませんでした)を削除するだけで問題が解決したようです。その後、通常どおりコンパイルとデバッグを行い、FileUploadクラスを使用することができました。

これは私が見つけたそれを利用したチュートリアルです:

http://blog.tallan.com/2011/02/04/using-mvc3-razor-helpers-and-jcrop-to-upload-and-crop-images/

4
Don

かみそりの使用

@*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/>
    }
0
jarimos