Как указать путь относительно текущего файла мастер-страницы - PullRequest
0 голосов
/ 02 декабря 2011

Я новичок в asp.net, но мастер-страницы, кажется, делают то, что мне нужно - позволяют мне настраивать различные шаблоны / презентации / стили во время выполнения, поэтому мое приложение может выглядеть по-другому, выбирая другую мастер-страницу,Каждая мастер-страница находится в своей собственной папке с набором изображений, адаптированных для этого «шаблона» - тогда я хочу, чтобы на страницах контента были ссылки на различные изображения, находящиеся в папке выбранной в данный момент мастер-страницы, например, кнопки навигации вDataPager:

<asp:DataPager ID="DataPager1" runat="server" PagedControlID="ListView1" 
    PageSize="25">
<Fields>
    <asp:NextPreviousPagerField ButtonType="Image" ShowFirstPageButton="True" 
        ShowNextPageButton="False" 
        FirstPageImageUrl="<<Current Master Root>>/img/action-first.png" 
        PreviousPageImageUrl="<<Current Master Root>>/img/action-prev.png" />
    <asp:NumericPagerField ButtonCount="10" NextPageText="&gt;&gt;" 
        PreviousPageText="&lt;&lt;" />
    <asp:NextPreviousPagerField ButtonType="Image" ShowLastPageButton="True" 
        ShowPreviousPageButton="False" 
        LastPageImageUrl="<<Current Master Root>>/img/action-last.png"
        NextPageImageUrl="<<Current Master Root>>/img/action-next.png" />
</Fields>
</asp:DataPager>
TEST: "<%= System.IO.Path.GetDirectoryName(MasterPageFile) %>" 
(this does not work if we try to use it inside the DataPager?)

Есть ли правильный способ сделать это, например, использовать символ tilda ~, чтобы попасть в корневую папку приложения?Установка этого в коде также оказывается утомительной, особенно для таких вещей, как DataPager, где свойства вкладываются в динамические списки подчиненных элементов управления (например, я не знаю, как установить свойство DataPager1.Fields [0] .NextPreviousPagerField.FirstPageImageUrl вкод).

Я обнаружил, что попытка сделать это с Темами требует большего количества кодирования, чем я начал, потому что мне нужно включить все определение элемента управления в файл скина, а не только свойства URL-адреса изображения, и тогда у меня естьдублировать этот код в каждой теме / скине.Если мне понадобится DataPager с другой конфигурацией кнопок и / или числовых полей, тогда мне придется дублировать эти варианты также в каждом файле скина.Если я внесу изменение позднее, мне нужно будет помнить, чтобы это изменение также было внесено во все скины, что серьезно нарушает цель отделения кода от скина.

Мое приложение выполняет несколько проектов, и каждый проектможет выбрать свой собственный шаблон.Для всего приложения я хочу сказать: если текущий проект использует TemplateX, используйте изображения из папки / TemplateX / img /, если выбран TemplateY, используйте изображения из / TemplateY / img /.Как вы знаете, не всегда можно полагаться на CSS, чтобы определить, какое изображение где использовать, поэтому мы должны иметь возможность поместить ссылку на изображение непосредственно в вывод HTML.

В пользовательской веб-системе DLL ISAPI, которую я разработал, япросто используйте строку подстановки, например «[# HTML.Template] /img/prev.png», чтобы вставить папку шаблона перед URL-адресом изображения.Возможно, есть ли способ, которым я могу подключить пользовательский препроцессор .aspx, чтобы вручную заменить все вхождения, как в примере выше, «<< Текущий главный корень >>» на текущую выбранную папку?

1 Ответ

0 голосов
/ 02 декабря 2011

попробуйте использовать что-то вроде этого

var path = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + HttpContext.Current.Request.ApplicationPath;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...