Anscheinend ist es möglich, formatierte Ausgabe mit dem <%= %>
Konstrukt (Renderblock) in ASP.NET Web Forms Seiten und Ansichten zu schreiben.Wo ist diese ASP.NET-Funktion dokumentiert? <% = string format, params object [] args%>
<%= "{0} is {1}", "Foo", 42 %>
Dies wird "Foo ist 42". Soweit ich weiß, übersetzt der ASP.NET-Parser <%= %>
in einen Anruf an HttpResponse.Write(string)
. Offensichtlich gibt es im obigen Code keine Eins-zu-Eins-Übersetzung, weil die Anzahl der Argumente nicht übereinstimmt (vorausgesetzt, dass ,
im obigen Ausdruck Argumente trennt).
Jetzt habe ich gesehen, dass die Klasse TextWriter
eine Write(string, object[])
Methode hat.
Ich habe die Ausgabe von dem Parser überprüft, und in der Tat nennt es die TextWriter
‚s Methode, die ein params object[]
Argument für die Formatierung übernimmt:
private void @__Renderform1(System.Web.UI.HtmlTextWriter @__w, System.Web.UI.Control parameterContainer) {
// ...
@__w.Write("{0} is {1}", "Foo", 42);
Ist das Verhalten überall dokumentiert?
+1 für mich etwas neues beizubringen. – Heinzi
@Heinzi Das erste Mal, dass ich es sah, dachte ich, es muss ein Bug sein, auch weil ReSharper es mit einer Warnung markiert hat "Methode '__ReSharper_Render' hat 1 Parameter, wird aber mit 3 Argument (en) aufgerufen" Ausdruck erwartet ". –
Dies ist nur klassische M $ FT.Ich habe 13 Jahre lang Anwendungen auf ihrem Stack gebaut und solche Sachen scheinen immer wieder aufzutauchen. Ich muss sagen, in der Open-Source-Community sieht man so etwas fast nirgendwo dokumentiert. Es kann schwierig sein, zu navigieren, weil Sie nie wissen, welche Bibliothek zu verwenden ist, aber sie sind dokumentiert. –