У меня проблема с созданием ссылок для моего приложения MVC в пользовательском HtmlHelper, и RouteLink не знает, что приложение MVC имеет виртуальный каталог. Это означает, что я могу отлаживать и нормально использовать приложение в тестировании, но оно генерирует недопустимые ссылки в работе. Есть ли способ заставить RouteLink () или ActionLink () включать виртуальный каталог для развернутого приложения при создании ссылок?
Вот соответствующий фрагмент кода:
private const string STagLink = "<span class=\"tag-{0}\">{1}</span>\r\n";
...
MvcHtmlString link = html.RouteLink(x.Name,
new { Tag = x.Name, Controller = x.Controller, Action = x.Action },
new { @class = "tag", Title = x.Title });
sb.AppendFormat(STagLink, j, link.toHtmlString());
При этом создается ссылка, например: «/ Home / Tag / Production» для экземпляра разработки, но когда приложение развертывается в виртуальном каталоге, например / foo, ссылка все равно «/ Home / Tag / Production» вместо «/foo/Home/Tag/Production".
Эта дискуссия в блоге Фила Хаака похожа: http://haacked.com/archive/2009/01/30/aspnetmvc-refresh.aspx#71053
Является ли единственным решением для установки виртуального пути для приложения MVC во время разработки? Я надеялся, что MVC будет знать о контексте, в котором он работает.