ASP.NET MVC RC возвращает неверный путь для Url.Content
ОБНОВЛЕНИЕ эта проблема не существует в битах выпуска 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 ответа
Я склонен использовать помощника регистрации скрипта Роба Конери:
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") %>
Как вы можете видеть в примере, он использует VirtualPathUtility для разрешения URL-адреса каталога Scripts. Это также должно помочь обойти проблему супа тегов.
Это должно было быть исправлено в RC2. Если вы используете RC2 и все еще видите эту проблему, пожалуйста, отправьте сообщение об ошибке по адресу http://forums.asp.net/1146.aspx.