C# 头标记中的内联代码-ASP.NET
是否可以在母版页的head标记中执行类似操作,其中包含runatserver:C# 头标记中的内联代码-ASP.NET,c#,asp.net,C#,Asp.net,是否可以在母版页的head标记中执行类似操作,其中包含runatserver: <link rel="Stylesheet" type="text/css" href='<%=Config.ResourcesDomain %>/images/style.css' /> 这不起作用,因为它会生成这种html: <link rel="Stylesheet" type="text/css" href="<%=Config.ResourcesDomai
<link rel="Stylesheet" type="text/css" href='<%=Config.ResourcesDomain %>/images/style.css' />
这不起作用,因为它会生成这种html:
<link rel="Stylesheet" type="text/css" href="<%=Config.ResourcesDomain %>/images/style.css" />
加价
<head>
<asp:Literal ID="litHead" runat="server" />
</head>
代码隐藏:
在页面上加载
litHead.Text = "<link rel='Stylesheet' type='text/css' href='" + Config.ResourcesDomain + "/images/style.css' />";
litHead.Text=”“;
更新:
那么就这样做吧
<head runat="server">
<%
Response.Write("<link rel='Stylesheet' type='text/css' href='" + Config.ResourcesDomain + "/images/style.css' />");
%>
<title></title>
</head>
将其更改为
<link rel="Stylesheet" type="text/css" href='<%Response.Write(Config.ResourcesDomain); %>/images/style.css' />
它应该工作输出呈现为这样的原因:
href="<%=Config.ResourcesDomain %>/images/style.css"
这是因为ASP.NET将链接视为HTMLINK
控件,并将href
属性的内容呈现为文本
将head部分标记为服务器控件是一个奇怪的怪癖,其中某些元素被视为服务器控件(即使没有使用runat=“server”
属性显式标记)
删除href属性周围的引号可解决此问题:
href=<%= Config.ResourcesDomain %>/images/style.css
href="<%= "" + Config.ResourcesDomain %>/images/style.css"
希望这有帮助
编辑
奇怪的是,如果对href
属性使用双引号,并在代码块中包含双引号,这也解决了问题:
href=<%= Config.ResourcesDomain %>/images/style.css
href="<%= "" + Config.ResourcesDomain %>/images/style.css"
href=“/images/style.css”
但是,以上这些都不是特别优雅的解决方案,从后面的代码中设置URL可能是一种方法。删除开头标记上的runat=“server”属性。
这样可以正确呈现asp.net内联代码。或执行以下操作:
<head>
<style type="text/css">
@import "<%= ResolveUrl("~/content/styles.css") %>";
@import "<%= ResolveUrl("~/content/print.css") %>" print;
</style>
</head>
@输入“”;
@导入“”打印;
显然,使用内联标记“”时需要数据绑定
这是我在这里找到的另一个解决方案:-- 只需将代码放在占位符中:
<asp:PlaceHolder runat="server">
... your code with <%= %> tags ...
</asp:PlaceHolder>
... 你的代码和标签。。。
目标是在head标记中内联设置它,而不需要后面的代码。请参见上面更新的内容。这是一种你需要在没有代码隐藏的情况下进行的竞争吗?尽可能避免使用我们称之为“意大利面编码”或内联编码。这些编码风格应该被忘记,因为在asp时代,它们经常被使用。ASP.NET完美地将标记和代码分隔开来,以更好地实践编码标准。它仍然逃避了“您是在aspx页面中编写的吗?您可以在母版页的所有代码中添加更多代码,而不是正文,只是正文的上半部分吗?”“为我工作。非常感谢你,我都快疯了!谢谢我需要它来根据用户编写正确的CSS文件…href=“CSS/Login2.min.CSS?v”正在为meThis工作,这是我找到的唯一可行的解决方案。没有别的办法
<asp:PlaceHolder runat="server">
... your code with <%= %> tags ...
</asp:PlaceHolder>