2010-09-19 76 views
2

嗨,解决MVC

虚拟路径我有一个ADRESS这样的:〜/内容/文件/ AdImages/20/20_thumb.jpeg,我想这能解决。这是在ASP.net中用Control.ResolveUrl()完成的。

根据这篇文章http://stephenwalther.com/blog/archive/2009/02/18/asp.net-mvc-tip-47-ndash-using-resolveurl-in-an-html.aspx,我应该使用的财产以后这样的:

urlHelper.Content( “〜/内容/文件/ AdImages/20/20_thumb.jpeg”)

但这不过返回以下url:/Content/Files/AdImages/20/20_thumb.jpeg,即使Im不在解决方案的根目录中(内容放在根目录中)?

我该如何解决这个问题?

注意,这是从HTML辅助扩展中。

// SnowJim

回答

3

的作业〜是总是解析为根,所以你看到的是正确的行为。如果你想这是相对于您当前所在的路径,然后你的路径不应以〜开始或/

+0

谢谢,我得到的路径〜/内容/文件/AdImages/20/20_thumb.jpeg,我可以将其转换为服务器端绝对路径。在这种情况下,我是否需要图像的相对路径。这可能会导致像../../Content/Files/AdImages/20/20_thumb.jpeg这样的img src。我该怎么做呢? – Banshee 2010-09-19 13:26:23

+0

然后我想我不清楚你想做什么。听起来像你理解绝对路径。我不认为我明白你为什么想要相对路径。你可以输入“../../Content/TheRestOfYourPath”。你是说有时你想让它排出3 ..就像这个“../../../Content”?如果是这样,那通常是在使用绝对路径时。 – 2010-09-19 14:24:33

+0

的问题是IMG SRC将/Content/Files/AdImages/20/20_thumb.jpeg,这是当URL看起来财产以后这样的:HTTP://本地主机/广告/列表(没有根,你可以看到)。我Supose的SRC应转换为财产以后像../../Content/Files/AdImages/20/20_thumb.jpeg摆脱视图到图像的正确路径。这不应该硬编码,因为助手可以在不同的地方在不同的页面上使用。在ASP.NET中有Control.ResolveUrl()来获取相对路径,我如何在MVC中做同样的事情? – Banshee 2010-09-19 14:37:33

4

是啊,〜不工作在asp.net一样MVC。因此,最好的选择似乎取代了〜有:

Request.Url.GetLeftPart(UriPartial.Authority)

所以不是:

urlHelper.Content("~/Content/Files/AdImages/20/20_thumb.jpeg") 

使用

urlHelper.Content(Request.Url.GetLeftPart(UriPartial.Authority) + "/Content/Files/AdImages/20/20_thumb.jpeg") 
+0

我不同意这个评论。请参阅Steve Michelotti的评论。 @ Url.Content( “〜/ Content/Files/AdImages/20/20_thumb.jpeg”)应该正常工作。 – Roman 2011-12-01 20:58:12

+0

为什么使用'urlHelper.content'?为什么不只是'Request.Url.GetLeftPart(UriPartial.Authority)+“/ Content/Files /AdImages/20/20_thumb.jpeg“'? – xr280xr 2016-08-19 16:56:35