我看到了一个非常奇怪的 asp.net 渲染问题。我在 .aspx 的相关部分中确实有这个(只是替换了路径和控件的名称):
<div id="header">
 <% if (SiteSettings.SiteName.Equals("sx") || SiteSettings.SiteName.Equals("sw"))
    { %>
        <sc:sublayout runat="server" renderingid="{B04CFA1A-6B5B-49D3-8000-339DBE9899C1}"
          path="/layouts/AX/HeaderSublayout.ascx" id="AXHeader" placeholder="content"></sc:sublayout>
 <% }
    else
    { %><!-- bla1 --><ax:strangeBehavingControl id="HeaderInclude" runat="server" IncludeType="Header" /><!-- bla2 -->
 <% } %>
</div>
呈现的 html 看起来像:
<!-- bla1 -->
""
expected content from strangeBehavingControl
<!-- bla2 -->
奇怪行为控制的 .ascx 非常简单:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="strangeBehavingControl.ascx.cs" Inherits="layouts.strangeBehavingControl" %>
任何地方都没有多余的空格,已经检查了很多次。后面的代码也很简单:
public partial class strangeBehavingControl: System.Web.UI.UserControl
    {
    protected override void Render(HtmlTextWriter writer)
        {
            var filePath = GetFilePath();
            if (!string.IsNullOrWhiteSpace(filePath) && File.Exists(Server.MapPath(filePath)))
                Response.WriteFile(filePath);
        }  
    }
所以我在想渲染的包含文件中的奇怪“”,但我手动检查了它们,它们以预期的字符开头。知道如何将这些字符插入那里吗?