Знает ли HtmlHelper.RouteLink о виртуальных каталогах? - PullRequest
1 голос
/ 12 января 2010

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

1 Ответ

2 голосов
/ 13 января 2010

Вы имеете в виду Виртуальное приложение или Виртуальный каталог?Виртуальные каталоги применяются для сопоставления физических папок с конкретными «виртуальными» URL-папками.Они как бы ортогональны ASP.NET MVC.Я не знаю ни одного способа запустить приложение ASP.NET MVC «в виртуальном каталоге», так как не думаю, что это имеет какой-либо смысл.

Если вы имеете в виду виртуальные приложения, то маршрутизацияучитывает это, когда приложение ASP.NET MVC выполняется в виртуальном приложении.

...