[英]Where is this ASP.NET feature documented? <%= string format, params object[] args %>
顯然,可以使用ASP.NET Web窗體頁面和視圖中的<%= %>
構造( 渲染塊 )編寫格式化輸出。
<%= "{0} is {1}", "Foo", 42 %>
這將使“Foo為42”。 據我所知,ASP.NET解析器將<%= %>
轉換為對HttpResponse.Write(string)
的調用。 顯然,在上面的代碼中,沒有一個對一翻譯,因為參數的數目不匹配(假設,
在上面的表達式中分離參數)。
現在我已經看到TextWriter
類有一個Write(string, object[])
方法。
我檢查了解析器的輸出,實際上它調用TextWriter
的方法接受params object[]
參數進行格式化:
private void @__Renderform1(System.Web.UI.HtmlTextWriter @__w, System.Web.UI.Control parameterContainer) {
// ...
@__w.Write( "{0} is {1}", "Foo", 42 );
這種行為記錄在哪里嗎?
據我所知,ASP.NET解析器將<%=%>轉換為對HttpResponse.Write(字符串)的調用。
也許<%= "{0} is {1}", "Foo", 42 %>
被翻譯為Response.Output.Write(string format, params object[] arg)
, Output
類型為TextWriter
,這將是根據http://www.hanselman.com/blog/ASPNETResponseWriteAndResponseOutputWriteKnowTheDifference.aspx的解釋
這是一個<%= %>
嵌入式代碼塊 ,用於保持與Classic ASP的兼容性。
如您所見<%= "{0} is {1}", "Foo", 42 %>
相當於:
string s = string.Format("{0} is {1}", "Foo", 42);
Response.Write(s);
這種行為記錄在這里 :
將包含對象數組的文本表示形式的格式化字符串寫入輸出流,以及任何掛起的制表符間距。 此方法使用與String.Format方法相同的語義。 (重寫TextWriter.Write(String,Object [])。)
以下是代碼渲染塊調用Write方法的文檔。
最后,如所描述的嵌入式代碼塊的語法已更新的.NET 4 這里 。
這很接近並且可能與http://msdn.microsoft.com/en-us/library/586y06yf.aspx相關,但它不是為什么<%=這樣做的解釋...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.