Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 头标记中的内联代码-ASP.NET_C#_Asp.net - Fatal编程技术网

C# 头标记中的内联代码-ASP.NET

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="&lt;%=Config.ResourcesDomai

是否可以在母版页的head标记中执行类似操作,其中包含runatserver:

 <link rel="Stylesheet" type="text/css" href='<%=Config.ResourcesDomain %>/images/style.css' />

这不起作用,因为它会生成这种html:

<link rel="Stylesheet" type="text/css" href="&lt;%=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="&lt;%=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>