2011-08-03 27 views
1

暫時不考慮是否應該在.aspx的HTML部分中使用Response.Write,在一個項目中,我正在處理來自後面代碼的變量使用Response.Write在前端顯示。它過去工作正常,但最近項目中的某些內容發生了變化(另一個開發團隊正在研究它,所以我不知道到底發生了什麼),但現在所有的Response.Write代碼塊都顯示在頁面的頂部。我唯一可能改變的線索是最近的一些AJAX功能被添加到了項目中。Response.Write代碼塊中的輸出出現在html之外

+2

嘗試使用ASP.Net服務器端標記'<%= variableValue%>'而不是'Response.Write(variableValue)' –

回答

1

Response.Write寫入響應流。您的數據添加到響應流的開始處的原因只能是您的語句觸發的事件是之前 ASP.NET的任何Response.Write開始。

你通常應該重寫RenderRenderChildrenRenderControl把你Response.Writes中,並確保調用適當的方法父,否則只有您的語句是可見的。或者,把你的Response.Write放在服務器標籤<% %>內,或者使用Naveed的建議(無論如何,它都可以在內部翻譯成Response.Write,但是寫得更清晰和更容易)。

編輯下面的擴展聊天摘要:原因發現在Telerik RadAjax.Net2控件。消除這個問題後,問題就消失了。由Andreas自己解決。

+0

嘿。非常感謝你的幫助。不幸的是,Repsonse.Write已經存在於服務器標籤中,它也無法使用<%= =>結構。奇怪的是,它在一個點上起作用,並且改變了一些東西以打破它。 我已經縮小了範圍,但進一步發現Response.Write被渲染到HTMLTextWriter被改變的頁面中的特定控件的外部,如下所示: – Andreas

+0

@User:「like this」之後的部分是從您的評論中遺失。但是你提到「特定控制」。您的代碼可能不在頁面內,而是在控件(用戶控件,服務器控件,母版頁)中?找到正在發生的事情的一個簡單方法是在Response.Write上創建一個斷點(點擊F9)。 – Abel

+0

對不起。它不會讓我提交剩餘的文本,而且我也跟蹤了一邊。您的問題的答案是肯定的,Response.Write被包含在一個用戶控件中,該用戶控件被動態地包含在母版頁中。 – Andreas