38

ImageResizer (ImageResizing dot net から) を使用したいと考えています。NuGet経由でMVC用のImageResizerをインストールしました。しかし、例から次のコードを使用すると:

//Loop through each uploaded file
foreach (string fileKey in HttpContext.Current.Request.Files.Keys)
{
    HttpPostedFile file = HttpContext.Current.Request.Files[fileKey];
    if (file.ContentLength <= 0) continue; //Skip unused file controls.

    //The resizing settings can specify any of 30 commands.. See http://imageresizing.net for details.
    //Destination paths can have variables like <guid> and <ext>, or 
    //even a santizied version of the original filename, like <filename:A-Za-z0-9>
    ImageResizer.ImageJob i = new ImageResizer.ImageJob(file, "~/uploads/<guid>.<ext>", new ImageResizer.ResizeSettings(
                            "width=2000;height=2000;format=jpg;mode=max"));
    i.CreateParentDirectory = true; //Auto-create the uploads directory.
    i.Build();
}

foreach の「HttpContext.Current.Request.Files.Keys」が解決されませんか? 私の使用方法は正しいのですが、Visual Studio には「解決」オプションがありません。

4

3 に答える 3

110

プレフィックスを付けてみてくださいSystem.Web.

を試してみるとSystem.Web.HttpContext.CurrentCurrent がありますが、 を試してみるとHttpContext.Current'Current' が認識されません。using ステートメントにはありますSystem.Webが、「Current」にアクセスするには、それを指定する必要があるようです。

@Chris の答えは、根本的な理由を指摘し、説明しています。

于 2013-05-02T12:52:15.590 に答える
65

問題は、Controllerクラスにというパブリック プロパティがあることですHttpContext( http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.httpcontext.aspxを参照)。

つまり、コントローラーで修飾せずに使用しようとすると、 ではなくローカル プロパティに解決されますSystem.Web.HttpContext。プロパティのタイプは、あなたが望むことHttpContextBaseをするプロパティを持っているRequestものです(ただし、から取得するクラスと同じではないことに注意してくださいSystem.Web.HttpContext.

于 2014-02-03T14:16:26.460 に答える
4

非常にシンプルなライブラリの追加

using System.Web;

そして交換

context.Response -> HttpContext.Current.Response

意味

context -> HttpContext.Current

そしてあなたの問題は解決されました。

于 2014-09-29T08:44:43.683 に答える