我需要在解决方案中的另一个项目中映射ASP MVC项目中文件夹的路径。我的模型在另一个类库中。我引用了System.web但似乎无法找到Server.MapPath。 < - 我不确定这是在MVC中执行此操作的方法
所以我的问题是:我的模型项目中需要包含哪些名称空间?如何在MVC中的Web应用程序中映射到文件夹?
非常感谢!
答案 0 :(得分:2)
您应该能够通过带有System.Web引用的HttpContext.Current.Server.MapPath访问它。虽然在你的模型中放置这种东西似乎有点不好。
在控制器中,您可以使用ControllerContext.HttpContext.Server.MapPath。
答案 1 :(得分:1)
它在Controller.Server
。如果您没有将此引用传递给需要的地方,我不确定上下文是否会正确设置。或者,您可以只在控制器中映射路径,并将路径传递给任何需要使用它的路径。
答案 2 :(得分:1)
您所指的类型是HttpServerUtilityBase(通常通过Server.MapPath调用),但HttpRequestBase也有一个MapPath方法(通常通过Request.MapPath调用)。这些是ASP.NET 4的System.Web.dll的一部分。请注意,这些的具体实现是HttpServerUtilityWrapper和HttpRequestWrapper。但总的来说,你永远不会创建那些实例。而是使用从ControllerContext获取的实例。
问题是,为什么你的模型项目需要调用它?您可能希望避免让模型依赖于这些类型。理想情况下,您只需在创建模型时传递值。另一种方法是创建自己的轻量级接口来定位文件路径,让模型依赖于它。
但不知道你为什么需要它,我只能推测。 :)如果你有充分的理由使用这些类,你需要将一个或另一个的实例传入你的模型类,以便它可以调用它。