MVC Url вспомогательный метод для статических страниц? - PullRequest
3 голосов
/ 25 марта 2011

Если у меня есть URL-адрес, подобный "/something/something/", и мой сайт http://mysite.com, и я хочу дать ссылку на этот URL-адрес, есть ли такой метод, как Url.Content();, который обнаружит виртуальный каталог сайта в IIS и карту соответственно к URL-пути?

Я пытался Url.GenerateContentUrl(), Url.Action(), Url.Content(), Url.RouteUrl()

Ответы [ 3 ]

8 голосов
/ 25 марта 2011

существует ли такой метод, как 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-адрес изображения независимо от того, где развернут ваш сайт.

1 голос
/ 10 мая 2011

Если по какой-либо причине вы не можете просто использовать Url.Content, вместо него можно использовать HostingEnvironment.ApplicationVirtualPath или HttpContext.Current.Server.MapPath .

Но я не могу придумать вескую причину, по которой вы не можете просто использовать Url.Content.

0 голосов
/ 25 марта 2011

Это то, что я предполагаю:

У вас есть файл типа myfile.jpg в корневом каталоге вашего сайта.Тогда вам нужен URL вроде:

http://mysite.com/myfile.jpg 

Верно?

Все, что вам нужно сделать, это добавить это в ваши маршруты в Global.asax.cs:

routes.IgnoreRoute("myfile.jpg");

Даон также должен работать с подпапками.

...