代码之家  ›  专栏  ›  技术社区  ›  Tarik

解决母版页中的URL问题

  •  2
  • Tarik  · 技术社区  · 15 年前

    可以,

    我知道这很奇怪,但是当我把这个代码放在 <head runat="server"></head> 在master.page中,它是这样呈现的:

     <link id="ctl00_Link1" rel="shortcut icon" href="../%3C%25%20ResolveUrl(%22~/Resources/Pictures/Shared/Misc/favicon.ico%22);%20%25%3E" type="image/x-icon" />
    

    它没有看到asp.net需要处理的东西。

    这是原始代码:

    <link id="Link1" rel="shortcut icon" href='<%=ResolveUrl("~/Resources/Pictures/Shared/Misc/favicon.ico") %>' type="image/x-icon" runat="server" />
    

    基本上,ASP.NET不处理下面的代码,而是呈现为一个普通的HTML。

    我怎样才能克服这个问题?

    提前谢谢…

    编辑并解决

    好吧,伙计们,没办法了。我终于弄明白了,因为resolverurl或resolveclienturl只适用于以下情况:

    @import '<%= ResolveUrl("~/Resources/Styles/MainMaster/MainDesign.css") %>';
    <script src='Resources/Scripts/Libraries/jquery-1.4.2.js' type="text/javascript"</script>
    

    它对于link来说太简单了,所以需要将link元素放在body标记中,如:

    <body>
        <link id="iconOne" rel="shortcut icon" type="image/x-icon" href="Resources/Pictures/Shared/Misc/favicon.ico"/>
        <link id="iconTwo" rel="icon" href='Resources/Pictures/Shared/Misc/favicon.ico' type="image/ico" />
    </body>
    
    2 回复  |  直到 14 年前
        1
  •  4
  •   Matt Briggs    15 年前

    所以,你遇到第一个问题的原因是链接标签 runat="server" 这告诉asp.net将其视为服务器控件,而不是文本。因为它是一个服务器控件,您的scriptlet标记( <%= %> )实际上什么也没做,因为它是一个服务器控件属性,它将它视为文本。

    有两种处理方法。首先是 ClientScriptManager 注册启动脚本。这将把你的链接标签放在正文中,这是微软说你应该这样做,但从美学角度来说不是那么好。另一个选择是在页面加载中执行类似的操作

    var link = new HtmlGenericControl("link");
    link.Attributes.Add("rel", "shortcut icon");
    link.Attributes.Add("src", ResolveUrl("~/Resources/Pictures/Shared/Misc/favicon.ico"));
    link.Attributes.Add("type", "image/x-icon");
    
    Header.Controls.Add(link);
    

    这将以编程方式构建一个控件,然后将其添加到head上的controls集合中,该集合将在head标记的末尾呈现为所需的内容。问题是它的工作要多一些,如果你能摆脱它,最好避免在代码隐藏级别上对控件集合进行修改。

        2
  •  3
  •   Community CDub    8 年前

    这可能会使事情比需要的复杂一些。你试过简单地使用 ~ 在图标路径中,并设置 <head runat="server"> ?

    例如:

    <head runat="server">
        ...
        <link rel="icon" href="~/Resources/Pictures/Shared/Misc/favicon.ico" 
            type="image/x-icon" />
        <link rel="shortcut icon" href="~/Resources/Pictures/Shared/Misc/favicon.ico"
            type="image/x-icon" />
        ...
    </head>
    

    相关SO答案 : Favicon Not Showing

    推荐文章