2011-03-25 24 views
3

如果我有一个像"/something/something/"这样的网址,我的网站是http://mysite.com,我想链接到那个网址,有没有像Url.Content();这样的方法,它会在IIS中发现网站的虚拟目录,并正确映射到一个url路径?MVC用于静态页面的Url辅助方法?

我试图Url.GenerateContentUrl(), Url.Action(), Url.Content(), Url.RouteUrl()

回答

8

是否有像Url.Content()这样的方法;

为什么Url.Content

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

将采取虚拟目录名的照顾,如果你身边部署在根http://example.com它将返回/something/something,如果你有一个虚拟目录http://example.com/applicationname它将返回/applicationname/something/something

因此,每次需要链接静态资源时,都应该使用Url.Content。例如:

<img src="<%= Url.Content("~/images/foo.png") %>" alt="" /> 

无论您的网站部署到何处,都将始终正确解析图像url。

0

这是我认为:

您在您的网站上的根像myfile.jpg的文件。然后你想要一个像这样的网址:

http://mysite.com/myfile.jpg 

对不对?

所有你需要做的就是在你的航线Global.asax.cs补充一点:

routes.IgnoreRoute("myfile.jpg"); 

是的,它应该在子文件夹的工作了。

+0

不,它是一个链接到一个动作结果的路由,所以没有文件扩展名,只是一个虚拟路由url。它看起来像这样:“/ pagename/actionname /”,但没有控制器或与其关联的操作方法,因为它只是路由表中的一个条目。 – nocarrier 2011-03-25 16:59:08

+0

@Shawn我完全不清楚你想要什么?你想公开文件?网页?什么? – gideon 2011-03-25 17:00:49

+0

好吧,那么当用户访问网址时你想要什么? – gideon 2011-03-25 17:01:27