ASP.NET MVC3のRazorヘルパーを使用してファイルアップロードコントロールを定義する方法はありますか?
ファイル入力用の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
それを取得するために私が見つけた最良/唯一の方法は、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/
かみそりの使用
@*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/>
}