对于专业的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));
}
}
}
可能是一个类库无法访问HttpContext
和Request
?
using System.Web.Mvc;
和using System.Web;
被正确引用。
我知道答案应该很简单,在google 30分钟的时候,我无法找到这个主题的良好升级。
感谢。
答案 0 :(得分:4)
在您的班级图书馆中,您需要使用HttpContext.Current
所以..访问MapPath ...使用:
HttpContext.Current.Server.MapPath
访问请求...使用:
HttpContext.Current.Request
请注意,您可以在代码中的任何位置使用 HttpContext.Current ,但是您应该验证它不是NULL(以防它不在Web上下文中)。
仅供参考:在Web / MVC应用程序中, Page.Context 属性指向与 HttpContext.Current
相同的位置希望它有所帮助。