簡體   English   中英

這個ASP.NET功能在哪里記錄? <%=字符串格式,params object [] args%>

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM