ASP.NET MVC中外部css的更好方法?

Eri*_*bia 2 css asp.net-mvc

我有一个ViewPage,我想在其中指定一个外部样式表.样式表仅适用于ViewPage中的元素.在一些不成功的尝试后,我决定使用"Url.Content"如下:

<asp:Content ID="cssLinkContent" ContentPlaceHolderID="CssLinkContent" runat="server">
    <link rel="stylesheet" type="text/css" href="<%= Url.Content("~/Content/custom.css")%>" />
</asp:Content>
Run Code Online (Sandbox Code Playgroud)

这在运行时工作正常,但Visual Studio编辑器显示错误"未定义类或CssClass值".我认为这是因为当我使用"Url.Content"时,Visual Studio无法解析外部样式表.

对能够成功解析URL在运行时的解决方案有什么想法,并让Visual Studio的幸福吗?

提前致谢.

Sam*_*ham 7

我会忽略Visual Studio.这是一个很好的工具,但有时它会努力.你确定这是一个错误警告吗?我知道这是一个很好的答案,但这就是我所做的.

难道它不会抱怨简单地用作jQuery饲料的样式吗?

另外,您可能希望编写一个Html.Stylesheet帮助程序来封装标记和URL解析行为,如下所示:

public static string Stylesheet(this HtmlHelper Html, string url) { return Html.Stylesheet(url, null); }
public static string Stylesheet(this HtmlHelper Html, string url, string media)
{
    UrlHelper Url = new UrlHelper(new RequestContext(Html.ViewContext.HttpContext, Html.ViewContext.RouteData));
    string html = "<link type=\"text/css\" rel=\"stylesheet\" href=\"{0}\" {1}/>";
    if (!string.IsNullOrEmpty(media))
        media = "media=\"" + media + "\"";

    return string.Format(html, Url.Content(url), media);
}
Run Code Online (Sandbox Code Playgroud)

由此产生了更清晰的标记:

<%= Html.Stylesheet("~/Content/custom.css") %>
Run Code Online (Sandbox Code Playgroud)