1

对于专业的 C# 程序员来说,答案可能太容易了,但这对我来说有点棘手,因为我是 C# 和 ASP.NET MVC 的新手。

我刚刚了解了策略设计模式。我的程序需要能够上传图片。我将通过两种方式完成此操作,(1)能够上传到文件系统,以及(2)上传到数据库。为此,我将为这两种算法使用策略设计模式。

问题是我在一个单独的类库中实现策略,而不是解决方案中的 MVC 应用程序项目。

这段代码在控制器中运行良好,但在类库中不起作用。

这是在控制器中

[HttpPost]
    public void UploadFile() {
        string physicalPath = HttpContext.Server.MapPath("../") + "UploadImages" + "\\";

        for (int i = 0; i < Request.Files.Count; i++) {

            Request.Files[0].SaveAs(physicalPath + System.IO.Path.GetFileName(Request.Files[i].FileName));
        }
    }

这是在类库中。

public class UploadToFile : IUpload {
    public void Upload() {
        string physicalPath = HttpContext.Server.MapPath("../") + "UploadImages" + "\\";
        for (int i = 0; i < Request.Files.Count; i++) {
            Request.Files[0].SaveAs(physicalPath + System.IO.Path.GetFileName(Request.Files[i].FileName));
        }
    }
}

可能是类库无法访问HttpContextand Request

using System.Web.Mvc;using System.Web;正确引用。

我知道答案应该很简单,我在谷歌搜索 30 分钟时找不到这个主题的良好升级。

谢谢。

4

1 回答 1

4

在您的类库中,您需要使用HttpContext.Current

所以..要访问 MapPath... 使用:

HttpContext.Current.Server.MapPath

访问请求...使用:

HttpContext.Current.Request

请注意,您可以在代码中的任何位置使用HttpContext.Current,但您应该验证它不是 NULL(以防万一它不在 Web 上下文中)。

仅供参考:在 Web/MVC 应用程序中,Page.Context属性指向与HttpContext.Current相同的位置

希望能帮助到你。

于 2013-06-03T17:21:13.440 回答