2012-05-17 52 views
3

我在asp.net渲染中看到了一個很奇怪的問題。我有完全這在.aspx的相關部分(剛剛更換的路徑名和控制):在asp.net控件之前在html中引用奇怪的引號

<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 --> 

爲strangeBehavingControl的的.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); 
     } 
    } 

,所以我在想,奇怪的「」在那裏裏面所呈現的包含的文件,但我手動檢查他們,他們開始與預期的字符。任何想法如何插入那些角色?

+0

「基本上我在.aspx中有這樣的內容:」< - 你能上傳到.aspx中的東西嗎(它可能只是一個錯字) –

+0

@web_bod,更新它 – lurscher

回答

3

您正在爲您的控件生成標記不正確。您的渲染方法應使用HtmlTextWriter實例給出,而不是使用Response上的任何直接輸出寫入方法。

它看起來像一個相當奇怪的設置,因爲您正在將內容寫入UserControl,這意味着它將呈現在頁面內。假設你總是輸出有效的HTML或純文本是否正確?

我建議你改變你的Render方法如下:

protected override void Render(HtmlTextWriter writer) 
{ 
    var filePath = GetFilePath(); 
    if (!string.IsNullOrWhiteSpace(filePath) && File.Exists(Server.MapPath(filePath))) 
     using (var sr = new StreamReader(filePath)) 
      writer.Write(sr.ReadToEnd()); 
} 
+0

首先嚐試在早上,謝謝!是的,我們總是輸出有效的HTML標頭,這是由另一個團隊創建的 – lurscher

2

有時控制文件有另一個字符集。 驗證你的文件在開始時沒有多餘的字符,如果是這樣的話,請刪除它們。 您可能必須使用智能文本編輯器才能做到這一點。

我有相同的額外空間問題,但我的控制沒有實施Render()方法。

相關問題