我正在使用主题构建一个asp.net应用程序,并且我已使用Web配置为应用程序分配了一个主题。
我有一个书签图标,我想用于我的页面,它位于主题目录中,但我无法从标题中的链接标记引用主题位置。
首先,我尝试在链接标记href元素中放置一个代码块,但这不起作用。相反,它所做的只是html编码<%字符并将其直接输出到浏览器:
<link rel="shortcut icon" href="/App_Themes/<%=Page.Theme %>/images/bookmark.ico" type="image/x-icon" runat="server"/>
我能够将代码块放在hr标记的元素中,所以我不知道它为什么不能在链接标记中工作:
<hr test="<%=Page.Theme %>"/>
然后我尝试在head标签内部执行Response.Write,但是我收到一条错误,说控件集合无法修改,因为控件包含代码块:
<% Response.Write("<link rel=\"shortcut icon\" href=\"/App_Themes/" + Page.Theme + "/images/bookmark.ico\" type=\"image/x-icon\"/>"); %>
我也尝试了一个字符串文字,并得到了同样的错误:
<%= "<link rel=\"shortcut icon\" href=\"/App_Themes/" + Page.StyleSheetTheme + "/images/bookmark.ico\" type=\"image/x-icon\"/>" %>
有没有办法从链接标记内的themes目录中引用某些内容?
我正在尝试在ASP.NET 2和ASP.NET 2 MVC应用程序中执行此操作。
答案 0 :(得分:1)
这不起作用,因为您将其标记为 runat =“server”
试试这个
<link rel="shortcut icon" href="<%=ResolveUrl(string.Format("~/App_Themes/{0}/images/bookmark.ico", Page.Theme)) %>" type="image/x-icon"/>
答案 1 :(得分:1)
杰里米,
尝试创建一个html帮助器,例如:
public static string SetThemeIcon(this HtmlHelper html, string themename)
{
var filePath = VirtualPathUtility.ToAbsolute("~/App_Themes/" + themename + "/images/bookmark.ico");
return "<link rel=\"shortcut icon\" href=\"" + filePath + "\" type=\"image/x-icon\"/>";
}
然后,在您的视图或母版页中,只需将其引用为:
<%= Html.SetThemeIcon("test") %>
或如上所述(在mvc中):
<%= Html.SetThemeIcon(String.IsNullOrEmpty(Page.Theme) ? Page.StyleSheetTheme : Page.Theme) %>
希望这会有所帮助...
吉姆
答案 2 :(得分:1)
您可以通过使用某个服务器元素包装脚本来删除内联代码:
<head runat="server">
<title>My Test App <title>
<div runat="server">
<link rel="shortcut icon" href="/App_Themes/<%=Page.Theme %>/images/bookmark.ico" type="image/x-icon" runat="server"/>
</div>
</head>
答案 3 :(得分:0)
好的,我通过使用一些内联代码来实现它。内联代码不是我的第一选择,但我想要一个在mvc中工作的解决方案。这就是我想出的:
<head runat="server">
<title>My Test App <title>
<script language="CS" runat="server">
void Page_Load(object sender, System.EventArgs e)
{
string sTheme = String.IsNullOrEmpty(Page.Theme) ? Page.StyleSheetTheme : Page.Theme;
litFacIcon.Text = "<link rel=\"shortcut icon\" href=\"/App_Themes/" + sTheme + "/images/bookmark.ico\" type=\"image/x-icon\"/>";
}
</script>
<asp:Literal ID="litFacIcon" runat="server"></asp:Literal>
</head>
答案 4 :(得分:0)
你也可以这样做:
<head>
<style type="text/css">
@import "<%= ResolveUrl("~/content/styles.css") %>";
@import "<%= ResolveUrl("~/content/print.css") %>" print;
</style>
</head>
答案 5 :(得分:0)
I use this way. (Add dummy space into block):
<link href="<%=""+RootUrl%>_ui/css/font-awesome.min.css" rel="stylesheet">
<link rel="shortcut icon" href="<%=""+RootUrl%>_ui/favicon.ico" />