2014-10-08 47 views
0

我有以下代碼行中ASP.Net(VB)ASP.Net - 功能前顯示功能輸出稱爲

Response.Write("<td class=""tblRow""><strong>" & ITServiceRow.NAME & " </strong><br>" & funcRAGColour(ITServiceRow.RAGSTATUS) & Environment.NewLine) 

這應該輸出從ITServiceRow.NAME名稱,隨後的結果功能funcRAGColour

但事實並非如此。 ASP.Net正在輸出函數的值funcRAGColour。首先跟着值ITServiceRow.NAME

只是想明白爲什麼會發生這種情況?如果我用靜態文本替換函數,它會執行正常,但是當我將函數放入它時,會在名稱之前立即輸出函數結果。

這裏的形象,在黃色顯示,來自該函數的全力輸出,它是一切之前顯示?

我在這裏錯過了一些明顯的東西嗎?

回答

1

嘗試使用String.Format來保證位置。

Response.Write(string.Format("<td class=""tblRow""><strong>{0}</strong><br />{1}{2}</td>",funcRAGColour(ITServiceRow.RAGSTATUS),Environment.NewLine)) 

總是盡一切可能來避免字符串連接。字符串串聯在系統上很困難,並且使用比您想象的更多的內存和資源進行垃圾收集,因爲它實際上要複雜得多。 String.Format和StringBuilder幫助解決這個問題。

我非常懷疑函數funcRAGColour()本身,但認爲這是問題所在。我的猜測是該函數不是以字符串形式返回輸出,而是使用Response.Write()來輸出結果。這會導致它的值首先出現,因爲它在字符串被組裝時被調用。

請記住,Response.Write不是在ASP.Net中執行任務的方式。這是需要在傳統的ASP中,但ASP.Net有HtmlTextWriters,可以在渲染過程中使用,控制結果放置等。這是舊的,非面向對象的做事方式可能會陷入困境。