如果我有一个像"/something/something/"
这样的网址,我的网站是http://mysite.com
,我想链接到那个网址,有没有像Url.Content();
这样的方法,它会在IIS中发现网站的虚拟目录,并正确映射到一个url路径?MVC用于静态页面的Url辅助方法?
我试图Url.GenerateContentUrl(), Url.Action(), Url.Content(), Url.RouteUrl()
如果我有一个像"/something/something/"
这样的网址,我的网站是http://mysite.com
,我想链接到那个网址,有没有像Url.Content();
这样的方法,它会在IIS中发现网站的虚拟目录,并正确映射到一个url路径?MVC用于静态页面的Url辅助方法?
我试图Url.GenerateContentUrl(), Url.Action(), Url.Content(), Url.RouteUrl()
是否有像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。
这是我认为:
您在您的网站上的根像myfile.jpg
的文件。然后你想要一个像这样的网址:
http://mysite.com/myfile.jpg
对不对?
所有你需要做的就是在你的航线Global.asax.cs
补充一点:
routes.IgnoreRoute("myfile.jpg");
是的,它应该在子文件夹的工作了。
如果出于任何原因您不能仅使用Url.Content,则可以使用HostingEnvironment.ApplicationVirtualPath或HttpContext.Current.Server.MapPath代替。
但我想不出一个很好的理由,你不能只使用Url.Content。
不,它是一个链接到一个动作结果的路由,所以没有文件扩展名,只是一个虚拟路由url。它看起来像这样:“/ pagename/actionname /”,但没有控制器或与其关联的操作方法,因为它只是路由表中的一个条目。 – nocarrier 2011-03-25 16:59:08
@Shawn我完全不清楚你想要什么?你想公开文件?网页?什么? – gideon 2011-03-25 17:00:49
好吧,那么当用户访问网址时你想要什么? – gideon 2011-03-25 17:01:27