ASP.NET MVC RC возвращает неверный путь для Url.Content - PullRequest
7 голосов
/ 05 марта 2009

ОБНОВЛЕНИЕ эта проблема не существует в битах выпуска ASP.NET MVC

У меня есть приложение ASP.NET MVC RC, которое отлично работает в отладчике, работающем с http://localhost:9002/ Но когда я публикую его в http://localhost/Zot/, вызовы Url.Content возвращают неверные значения.

У меня есть теги скрипта, такие как

<script src="<%= Url.Content("~/Scripts/util.js") %>" ...

На опубликованном сайте это выдает:

<script src="Zot/Scripts/util.js" ...

Вместо

<script src="/Zot/Scripts/util.js" ...

или

<script src="Scripts/util.js" ...

У меня есть теги таблиц стилей, такие как:

<link href="~/Content/Site.css" runat="server" ...

Это производит правильную вещь:

<link href="Content/Site.css" ...

Любые предложения по поводу сбоя Url.Content. Я явно не могу поставить runat="server" на теги <script>.

Ответы [ 2 ]

6 голосов
/ 05 марта 2009

Я склонен использовать помощника регистрации Роба Конери :

public static string RegisterJS(this System.Web.Mvc.HtmlHelper helper, string scriptLib) {
  //get the directory where the scripts are
  string scriptRoot = VirtualPathUtility.ToAbsolute("~/Scripts");
  string scriptFormat="<script src=\"{0}/{1}\" type=\"text/javascript\"></script>\r\n";
  return string.Format(scriptFormat,scriptRoot,scriptLib);
}

Использование:

<%= Html.RegisterJS("myscriptFile.js") %>

Как видно из примера, для разрешения URL-адреса каталога Scripts используется VirtualPathUtility. Это также должно помочь обойти проблему супа с тегами.

2 голосов
/ 06 марта 2009

Это должно быть исправлено в RC2. Если вы используете RC2 и все еще видите эту проблему, пожалуйста, отправьте сообщение об ошибке на http://forums.asp.net/1146.aspx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...