为了获得完全合格的应用程序路径,我编写了一个函数:
public class Generic
{
public static string FullyQualifiedApplicationPath
{
get
{
//Return variable declaration
string appPath = string.Empty;
//Getting the current context of HTTP request
var context = HttpContext.Current;
//Checking the current context content
if (context != null)
{
//Formatting the fully qualified website url/name
appPath = string.Format("{0}://{1}{2}{3}",
context.Request.Url.Scheme,
context.Request.Url.Host,
context.Request.Url.Port == 80
? string.Empty
: ":" + context.Request.Url.Port,
context.Request.ApplicationPath);
}
if (appPath.EndsWith("/"))
appPath = appPath.Substring(0, appPath.Length - 1);
return appPath;
}
}
}
当我在<head>
之间的<%=%>
标记中使用它时,我得到了不同的输出。
<link href="<%= Generic.FullyQualifiedApplicationPath %>/Styles/StyleSheet.css" rel="stylesheet" type="text/css" />
<script src="<%= Generic.FullyQualifiedApplicationPath %>/Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
html输出:
<link href="<%= Generic.FullyQualifiedApplicationPath %>/Styles/StyleSheet.css" rel="stylesheet" type="text/css" />
<script src="http://localhost:2093/SourceOne/Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>
只是为什么asp.net引擎将<%= Generic.FullyQualifiedApplicationPath %>
发送给客户端。
- NJ
答案 0 :(得分:1)
ASP.NET基本上将您的内联评估视为字符串文字并将其转义。您可以尝试使用数据绑定语法&lt;%#%&gt;
<link runat="server" id="lnkStyle" href='<%# Generic.FullyQualifiedApplicationPath + "/Styles/StyleSheet.css"%>' rel="stylesheet" type="text/css" />
<script runat="server" id="scptJQuery" src='<%# Generic.FullyQualifiedApplicationPath + "/Scripts/jquery-1.7.2.min.js"%>' type="text/javascript"></script>
然后在你的代码中,覆盖OnPreRender,并输入以下逻辑
lnkStyle.DataBind();
scptJQuery.DataBind();
重要的是绑定语法不与其他文字混合,否则ASP.NET会将整个属性视为字符串文字。
答案 1 :(得分:1)
这是因为在头标记链接中考虑作为服务器控制,在服务器控件中,hreaf会自动解码。
您可以在a
代码
<a runat="server" href='<%= Generic.FullyQualifiedApplicationPath %>/Styles/StyleSheet.css'></a>
输出
<a href="<%= Generic.FullyQualifiedApplicationPath %>/Styles/StyleSheet.css" ></a>
我认为解决方案是从代码中传递href
<link rel="stylesheet" type="text/css" runat="server" id="mystyle" />
中的代码
mystyle.Href= Generic.FullyQualifiedApplicationPath + "/Styles/StyleSheet.css";