什么是在MVC静态方法中将路径映射到图像的正确方法

时间:2011-10-04 17:31:04

标签: c# asp.net path

稍微挣扎......我在SO周围阅读并发现我应该使用HostingEnvironment.MapPath()。

每次我尝试使用这种方法时,都会被告知虚拟路径不被允许。

我的文件位于(项目)\ Content \ Images \ MyImage.jpg

Image image = Image.GetInstance(HostingEnvironment.MapPath("/") + "/Content/Images.cslogo_highres.jpg");
  

无法找到路径'C:\ inetpub \ wwwroot \ Content \ Images \ cslogo_highres.jpg'的一部分。

Image image = Image.GetInstance(HostingEnvironment.MapPath("Content") + "/Images/cslogo_highres.jpg");
  

此处不允许使用相对虚拟路径“内容”。

我尝试了一些其他组合,谷歌搜索了一下,但还没有能够提出一些有用的东西。我真的只想使用ResolveUrl(〜/ Content / Images / cslogo_highres.jpg),但它似乎不是一个静态方法下的选项。

很抱歉,如果这是微不足道的,但我的猜测和检查路径很沮丧。

编辑:答案,令人惊讶的不像人们所期望的那样简洁:

Image image = Image.GetInstance(HostingEnvironment.MapPath(VirtualPathUtility.ToAbsolute("~/Content/Images/cslogo_highres.jpg")));

1 个答案:

答案 0 :(得分:4)

Image image = Image.GetInstance(HostingEnvironment.MapPath(VirtualPathUtility.ToAbsolute("~/Content/Images/cslogo_highres.jpg")));