Добавить css ссылку в HTML метода расширения HtmlHelper

У меня есть метод расширения HtmlHelper, как показано ниже. Он возвращает экземпляр PagedList.Mvc.HtmlHelper.PagedListPager.

В PagedListRenderOptions указаны некоторые классы css. Каждое представление, использующее этот метод, должно добавить ссылку на файл css, содержащий стили. Я нахожу это повторяющимся и избыточным.

Есть ли способ добавить CSS к экземпляру MvcHtmlString, который здесь возвращается?

public static MvcHtmlString PagedListPagerCustom(this HtmlHelper helper, UrlHelper Url, PagedList.IPagedList pager)
{
    return PagedList.Mvc.HtmlHelper.PagedListPager(
        helper,
        pager,
        page =>
        {
            return Url.Action("Inspection", "Operation", new { page = page, pageList = true });
        },
        new PagedList.Mvc.PagedListRenderOptions()
        {
            LiElementClasses = new List<string> { "pagerLiElement" },
            ContainerDivClasses = new List<string> { },
            UlElementClasses = new List<string> { "pagerUlElementClasses" },
            DisplayPageCountAndCurrentLocation = false,
            DisplayLinkToFirstPage = PagedList.Mvc.PagedListDisplayMode.Always,
            DisplayLinkToLastPage = PagedList.Mvc.PagedListDisplayMode.Always,
            DisplayLinkToNextPage = PagedList.Mvc.PagedListDisplayMode.Always,
            DisplayLinkToPreviousPage = PagedList.Mvc.PagedListDisplayMode.Always,
            Display = PagedList.Mvc.PagedListDisplayMode.IfNeeded,
            LinkToLastPageFormat = "Last",
            LinkToNextPageFormat = "Next",
            LinkToPreviousPageFormat = "Prev",
            LinkToFirstPageFormat = "1st",
            DisplayEllipsesWhenNotShowingAllPageNumbers = true,
            MaximumPageNumbersToDisplay = 5,
            DisplayLinkToIndividualPages = true,
            ClassToApplyToFirstListItemInPager = "pagerLiElementFirst",
            ClassToApplyToLastListItemInPager = "pagerLiElement",
        }
    );
}

Ссылка css, которую я добавлю:

<link href="~/Content/css/PageListCustom.css" rel="stylesheet">

person pnizzle    schedule 21.01.2019    source источник


Ответы (1)


К сожалению, добиться этого не так-то просто. Тег CSS <link> должен находиться в разделе <head> в документации W3C. указывает:

Этот элемент определяет ссылку. В отличие от A, он может появляться только в разделе HEAD документа, хотя может появляться любое количество раз. Хотя LINK не имеет содержимого, он передает информацию о взаимосвязях, которая может быть отображена пользовательскими агентами различными способами (например, панель инструментов с раскрывающимся меню ссылок).

Это означает, что вы не можете просто вывести его как часть вашей строки HtmlHelper, потому что она будет использоваться в теле HTML-страницы. Вместо этого вы должны либо добавить ссылку CSS вручную в <head>, либо использовать встроенный <style> element, который, возможно, является менее чистым решением.

person Martin Zikmund    schedule 21.01.2019