用于静态页面的MVC Url辅助方法?

时间:2011-03-25 16:49:39

标签: c# asp.net-mvc asp.net-mvc-2 url-routing

如果我有一个类似"/something/something/"的网址且我的网站为http://mysite.com并且我想要链接到那个网址,那么是否有类似Url.Content();的方法会发现虚拟目录IIS中的站点并正确映射到URL路径?

我尝试了Url.GenerateContentUrl(), Url.Action(), Url.Content(), Url.RouteUrl()

3 个答案:

答案 0 :(得分:8)

  

是否有像Url.Content();

这样的方法

为什么喜欢,如果有Url.Content

var url = Url.Content("~/something/something");

将负责虚拟目录名称,如果您的一方部署在根http://example.com,它将返回/something/something,如果您有一个虚拟目录http://example.com/applicationname,它将返回{ {1}}。

因此,每当您需要链接静态资源时,您应始终使用/applicationname/something/something。例如:

Url.Content
无论您的网站部署在何处,

都将始终正确解析图片网址。

答案 1 :(得分:1)

如果出于某种原因,您不能仅使用Url.Content,则可以使用HostingEnvironment.ApplicationVirtualPathHttpContext.Current.Server.MapPath代替。

但我想不出一个很好的理由你不能只使用Url.Content。

答案 2 :(得分:0)

这就是我的假设:

您网站上的根目录中有myfile.jpg这样的文件。然后你想要一个像:

的网址
http://mysite.com/myfile.jpg 

右?

您需要做的就是在Global.asax.cs中添加此路线:

routes.IgnoreRoute("myfile.jpg");

是的,它也适用于子文件夹。