解决MVC中的虚拟路径

时间:2010-09-19 11:34:31

标签: asp.net-mvc url resolve urlhelper

您好,

我有这样的地址:〜/ Content / Files / AdImages / 20 / 20_thumb.jpeg,我需要解决这个问题。这是在带有Control.ResolveUrl()的ASP.net中完成的。

根据这篇文章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”)

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

我该如何解决这个问题?

请注意,这是来自html帮助程序扩展名。

// SnowJim

2 个答案:

答案 0 :(得分:3)

〜的工作是始终解析为root,以便您看到正确的行为。如果您希望这相对于您当前所在的路径,那么您的路径不应该以〜或/

开头

答案 1 :(得分:3)

是的,〜在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")