我在ASP.Net(VB)中有以下代码行
Response.Write("<td class=""tblRow""><strong>" & ITServiceRow.NAME & " </strong><br>" & funcRAGColour(ITServiceRow.RAGSTATUS) & Environment.NewLine)
这应该从 ITServiceRow.NAME 输出名称,然后输出函数 funcRAGColour 的结果。
但事实并非如此。 ASP.Net正在输出函数 funcRAGColour 的值。首先是 ITServiceRow.NAME 的值。
试着理解为什么会发生这种情况?如果我用静态文本替换该函数它会执行正常,但是当我将函数放入其中时,会在名称之前输出函数结果。
此处的图像以黄色显示来自该功能的完整输出,它显示在其他所有内容之前?
我错过了一些明显的东西吗?
答案 0 :(得分: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可以在渲染过程中使用,控制结果放置等等。这是旧学校,非面向对象的做事方式可能会遇到麻烦。 / p>