asp.net - net - tag helpers
¿Dónde se documenta esta característica de ASP.NET?<%=formato de cadena, objeto params[] args%> (3)
Por lo que sé, el analizador ASP.NET traduce <% =%> en una llamada a HttpResponse.Write (cadena).
Tal vez el <%= "{0} is {1}", "Foo", 42 %>
se traduzca a Response.Output.Write(string format, params object[] arg)
, siendo la Output
de tipo TextWriter
, que sería la explicación de acuerdo con http://www.hanselman.com/blog/ASPNETResponseWriteAndResponseOutputWriteKnowTheDifference.aspx
Aparentemente, es posible escribir una salida con formato utilizando la construcción <%= %>
( bloque de procesamiento ) en las páginas y vistas de formularios web ASP.NET.
<%= "{0} is {1}", "Foo", 42 %>
Esto hará que "Foo sea 42". Por lo que sé, el analizador ASP.NET traduce <%= %>
en una llamada a HttpResponse.Write(string)
. Obviamente, en el código anterior, no hay una traducción uno a uno, porque el número de argumentos no coincide (suponiendo que ,
en la expresión anterior separa los argumentos).
Ahora he visto que la clase TextWriter
tiene un TextWriter
Write(string, object[])
.
He comprobado la salida del analizador y, de hecho, llama al método TextWriter
que acepta un argumento de params object[]
para formatear:
private void @__Renderform1(System.Web.UI.HtmlTextWriter @__w, System.Web.UI.Control parameterContainer) {
// ...
@__w.Write( "{0} is {1}", "Foo", 42 );
¿Está ese comportamiento documentado en alguna parte?
Este es un bloque de código incorporado <%= %>
y existe para mantener la compatibilidad con Classic ASP.
Como viste, <%= "{0} is {1}", "Foo", 42 %>
es equivalente a:
string s = string.Format("{0} is {1}", "Foo", 42);
Response.Write(s);
Ese comportamiento está documentado here :
Escribe una cadena con formato que contiene la representación de texto de una matriz de objetos en la secuencia de salida, junto con cualquier espacio de tabulación pendiente. Este método utiliza la misma semántica que el método String.Format. (Invalida a TextWriter.Write (Cadena, Objeto []).)
Here es donde se documenta que el Bloque de procesamiento de código llama al método de escritura.
Finalmente, la sintaxis para los bloques de código incrustados se ha actualizado para .NET 4 como se describe here .
Esto está cerca y tal vez esté relacionado con http://msdn.microsoft.com/en-us/library/586y06yf.aspx pero no es una explicación de por qué <% = lo hace ...