Корневой путь, ломающий пути - PullRequest
0 голосов
/ 09 марта 2009

Я в процессе развертывания приложения ASP.NET MVC на IIS 6, но столкнулся с проблемой с корневым путем.

В Global.asax у меня сопоставлен корневой путь:

routes.MapRoute("Root", "", 
    new { controller = "Dashboard", action = "Index", id = "" });

Когда я перехожу к http://servername:70/test2/,, приложение отображает правильную страницу, но таблица стилей и файлы JavaScript не загружаются. Глядя на источник, пути показывают вот так:

<script src="test2/Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" 
    href="test2/Content/stylesheets/app.css" />

Что заставляет браузер искать

http://servername:70/test2/test2/Content/stylesheets/app.css

Когда я иду прямо к контроллеру (http://servername:70/test2/Dashboard.aspx), пути правильные:

<link rel="stylesheet" type="text/css" href="Content/stylesheets/app.css" />

Это также происходит с любыми ссылками, созданными с помощью ActionLink. Пути таблиц стилей и сценариев создаются с помощью Url.Content:

<link rel="stylesheet" type="text/css" 
    href="<%= Url.Content("~/Content/stylesheets/app.css") %>" />

Ответы [ 2 ]

0 голосов
/ 11 июня 2009

Или используйте Url.Content ...

<link href="<%=Url.Content("~/Content/Site.css") %>" rel="stylesheet" type="text/css" />

0 голосов
/ 10 марта 2009

Я недавно ответил на вопрос , подобный этому, в котором используется Помощник регистрации сценариев Роба Конери . Я скопирую здесь ответ для вас и добавлю пример HtmlHelper для таблиц стилей.

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);
}

public static string RegisterCSS(this System.Web.Mvc.HtmlHelper helper, string styleLink, string rel) {
  //get the directory where the css is
  string stylesheetRoot = VirtualPathUtility.ToAbsolute("~/Content/Stylesheets");
  string styleFormat="<link type='text/css' href='{0}/{1}' rel='{1}' />\r\n";
  return string.Format(styleFormat, stylesheetRoot, styleLink, rel);
}

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

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

Надеюсь, это поможет.

Также , отмечу, что на этот вопрос был еще один ответ Леви :

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

Если это ваш предпочтительный ответ, пожалуйста, ответьте Леви на ответ .

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