首页 > 解决方案 > 将css链接添加到HtmlHelper扩展方法的HTML

问题描述

我有一个 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">

标签: c#asp.nethtml-helperpagedlisturlhelper

解决方案


不幸的是,这并不容易实现。CSS<link>标记必须在W3C 文档指定的<head>部分中:

该元素定义了一个链接。与 A 不同,它可能只出现在文档的 HEAD 部分,尽管它可能出现多次。虽然 LINK 没有内容,但它传达了用户代理可以通过多种方式呈现的关系信息(例如,带有链接下拉菜单的工具栏)。

这意味着您不能只将其作为HtmlHelper字符串的一部分输出,因为它将在 HTML 页面的正文中使用。您必须改为手动将 CSS 链接添加到<head>或使用可以说是不太干净的解决方案的内联<style>元素。


推荐阅读