我有一个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>
这在运行时工作正常,但Visual Studio编辑器显示错误“未定义类或CssClass值”。我认为这是因为当我使用“Url.Content”时,Visual Studio无法解析外部样式表。
有关在运行时和成功解析URL的解决方案的任何想法都会让Visual Studio感到高兴吗?
提前致谢。
答案 0 :(得分: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);
}
导致这个更清晰的标记:
<%= Html.Stylesheet("~/Content/custom.css") %>
答案 1 :(得分:3)
这是一个奇怪的解决方案,但它有效:
<!-- next line only for VS -->
<% if(false) { %><script src="../../Content/custom.css" type="text/javascript"></script><% } %>
<link rel="stylesheet" type="text/css" href="<%= Url.Content("~/Content/custom.css")%>" />
你也可以在你的视图中使用类似的东西来实现jQuery intellisense:
<% if(false) { %><script src="../../static/jquery/jquery-1.3.2-vsdoc2.js" type="text/javascript"></script><% } %>
答案 2 :(得分:1)
你试过吗
<link rel="stylesheet" type="text/css"
href="<%= ResolveUrl("~/Content/custom.css")%>" />