2

我正在使用主题构建一个 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,但我收到一条错误消息,指出无法修改 Controls 集合,因为控件包含代码块:

<% 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\"/>" %>

有没有办法从链接标签内的主题目录中引用一些东西?

我正在尝试在 ASP.NET 2 和 ASP.NET 2 MVC 应用程序中执行此操作。

4

6 回答 6

1

这不起作用,因为您将其标记为runat="server"

试试这个

<link rel="shortcut icon" href="<%=ResolveUrl(string.Format("~/App_Themes/{0}/images/bookmark.ico", Page.Theme)) %>" type="image/x-icon"/>
于 2010-02-01T18:38:57.327 回答
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) %>

希望这可以帮助...

吉姆

于 2010-02-02T09:06:48.470 回答
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>
于 2012-04-16T20:07:45.867 回答
1

我用这种方式。(将虚拟空间添加到块中):

<link href="<%=""+RootUrl%>_ui/css/font-awesome.min.css" rel="stylesheet"> <link rel="shortcut icon" href="<%=""+RootUrl%>_ui/favicon.ico" />

于 2017-10-12T10:05:10.677 回答
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>
于 2010-02-01T16:19:04.007 回答
0

你也可以这样做:

<head>
    <style type="text/css">
        @import "<%= ResolveUrl("~/content/styles.css") %>";
        @import "<%= ResolveUrl("~/content/print.css") %>" print;
    </style>
</head>
于 2012-06-26T08:47:52.670 回答