我试图根据代码隐藏中收集的信息为我的页面加载一个自定义的favicon。我有一个公共字符串属性ClientFavicon
,它在我的aspx文件的代码隐藏中被正确填充,但似乎我无法使用它。下面是我的aspx文件的样子:
<%@ Page Language="c#" CodeBehind="page.aspx.cs" AutoEventWireup="True" Inherits="project.namespace" EnableViewState="True" Async="true" %>
<!DOCTYPE html>
<html lang="en">
<head runat="server">
<meta charset="utf-8">
<link href="<%=ClientFavicon%>" rel="shortcut icon" type="image/x-icon" />
...
other head elements
...
</head>
<body>
...
other page elements
...
</body>
</html>
字符串
和codebeath:
namespace project.namespace
{
public class myclass
{
public string ClientFavicon { get; set; }
private void Page_Load(object sender, EventArgs e)
{
...
other code
...
LoadClientFavicon();
}
private void LoadClientFavicon()
{
var clientFolder = "/images/client/";
var favicon = string.Empty;
if (HttpContext.Current.Session != null)
{
favicon = HttpContext.Current.Session[Global.SESSION_GLOBAL_CLIENT_FAVICON] != null
? HttpContext.Current.Session[Global.SESSION_GLOBAL_CLIENT_FAVICON].ToString()
: "favicon.ico";
ClientFavicon = clientFolder + favicon;
}
}
}
}
型
然而,当我运行这个,我得到没有favicon和以下400错误在浏览器devtools网络选项卡:
https://website.url/aspxpage/%3C%=ClientFavicon%%3E
型
所以在我看来,它不把链接中的内容识别为变量,而只是文本。
对于favicon链接元素,我尝试过,但没有成功:使用单引号而不是双引号,删除等号,并添加runat="server"
。
我也试过在aspx页面的顶部放置一个代码片段<% var test = ClientFavicon; %>
,并设置一个断点,test
变量有正确的数据。我也无法让test
在href中工作,上面的所有语法都是试错法。
最后,我尝试将填充ClientFavicon的方法从代码隐藏中移到页面顶部<head>
标记之前的<% %>
块中,并在那里使用变量,但我得到了相同的结果。
我已经看了一些与此相关的其他StackOverflow帖子,我不确定还能尝试什么,或者我是否错过了什么。
2条答案
按热度按时间muk1a3rh1#
一位同事发现将
link
Package 在asp占位符中可以工作,因为<head>
具有runat="server"
:字符串
ztyzrc3y2#
尝试像这样更改链接:
字符串
然后将引号作为变量的一部分:
型
您可能还需要设置 * 整个
link
实体 *:型
然后在代码隐藏中:
型
由于这是Web Forms,您可能会使用一些对于字符串插值来说太旧的东西:
型