我看到了一个非常奇怪的 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);
}
}
所以我在想渲染的包含文件中的奇怪“”,但我手动检查了它们,它们以预期的字符开头。知道如何将这些字符插入那里吗?