MVCContrib - Использование Html.StyleSheet () Helper отображает неверный путь при использовании с T4MVC - PullRequest
0 голосов
/ 21 июля 2010

Я использую последнюю версию MVCContrib и пытаюсь включить таблицу стилей с помощью следующего вспомогательного метода:

<%=Html.Stylesheet(Links.Content.Site_css)%>

Отображаемый путь неверно рассчитывается как:

<link type="text/css" rel="stylesheet" href="/content/css/Content/Site.css" />

Фактический путь должен быть: /Content/Site.css

Это ошибка?

Следующие методы работают правильно:

МЕТОД 1: <%=Html.Stylesheet("~/Content/Site.css")%>

МЕТОД 2: <link type="text/css" rel="stylesheet" href="<%:Links.Content.Site_css %>" />

ОБНОВЛЕНИЕ 1:

Links.Content.Site_css представляет статическое поле, которое генерируется автоматически с использованием T4MVC

ОБНОВЛЕНИЕ 2: Вот как выглядит код, сгенерированный T4MVC ...

namespace Links {

    ...snipped for brevity...

    [GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
    public static class Content {
        private const string URLPATH = "~/Content";
        public static string Url() { return T4MVCHelpers.ProcessVirtualPath(URLPATH); }
        public static string Url(string fileName) { return T4MVCHelpers.ProcessVirtualPath(URLPATH + "/" + fileName); }

        public static readonly string Site_css = Url("Site.css");
}

1 Ответ

2 голосов
/ 26 июля 2010

Не ошибка.Это работает как ожидалось.Обратитесь к При использовании MvcContrib ScriptInclude, Stylesheet и T4MVC

выходные данные ссылок T4MVC являются относительными путями, которые были разрешены (то есть они больше не имеют «~«).Помощники MVC Contrib предполагают, что если переданный им URL-адрес не содержит «~», то перед сценариями будет добавлено «~ / Scripts /» или «~ / content / css / '» для стилей.Видя, что я переместил свои скрипты, стили и изображения в папку «~ / Content», есть несколько изменений в помощниках MVC Contrib Html, которые могли бы сделать эту работу… Предоставить некоторый механизм для определения путей, добавленных кСценарии и стили, если нет «~». Переопределите Html Helpers с помощью другой опции, чтобы не добавлять информацию о пути. Возможно, найдите «/» вместо «~» при определении, должен ли путь предшествовать URL-адресу * 1007.*

...