【问题标题】:How do I map the path of a folder in ASP MVC application如何在 ASP MVC 应用程序中映射文件夹的路径
【发布时间】:2011-04-27 15:42:32
【问题描述】:

我需要从解决方案的另一个项目中映射我的 ASP MVC 项目中文件夹的路径。我的模型在另一个类库中。我引用了 System.web,但似乎找不到 Server.MapPath。

所以我的问题是:我的模型项目中需要包含哪些命名空间,以及如何在 MVC 中映射到 Web 应用程序中的文件夹?

非常感谢!

【问题讨论】:

    标签: asp.net-mvc


    【解决方案1】:

    您应该能够通过带有 System.Web 引用的 HttpContext.Current.Server.MapPath 访问它。不过,将这种东西放在你的模型中似乎有点糟糕。

    在控制器中,您可以使用 ControllerContext.HttpContext.Server.MapPath。

    【讨论】:

    • 让模型知道应用程序文件夹结构似乎很糟糕?
    • 最终......它认为你是对的。这不是访问 HTTPContext 的正确位置。 +1
    【解决方案2】:

    您指的类型是HttpServerUtilityBase(通常通过Server.MapPath 调用),但HttpRequestBase 也有一个MapPath 方法(通常通过Request.MapPath 调用)。这些是 ASP.NET 4 的 System.Web.dll 的一部分。请注意,这些的具体实现是 HttpServerUtilityWrapper 和 HttpRequestWrapper。但总的来说,您永远不会创建这些实例。相反,请使用从 ControllerContext 获得的实例。

    问题是为什么您的模型项目需要调用它?您可能希望避免让您的模型依赖于这些类型。理想情况下,您只需在创建模型时传递值。另一种方法是创建您自己的轻量级接口来定位文件路径,并让您的模型依赖于此。

    但不知道你为什么需要它,我只能推测。 :) 如果您有充分的理由使用这些类,则需要将其中一个或另一个的实例传递给您的模型类,以便它可以调用它。

    【讨论】:

    • 你是对的..这个值可能应该在构建模型时提供。我要走那条路。谢谢。
    【解决方案3】:

    它位于Controller.Server。如果您不将此引用传递到需要它的地方,我不确定上下文是否会正确设置。或者,您可以在控制器中映射路径并将路径传递给任何需要使用它的对象。

    【讨论】:

      猜你喜欢
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多