Подтвердить что ты не робот

Где эта функция ASP.NET документирована? <% = строковый формат, params object [] args%>

По-видимому, можно писать форматированный вывод, используя конструкцию <%= %> (блок рендеринга) на страницах и представлениях веб-форм ASP.NET.

<%= "{0} is {1}", "Foo", 42 %>

Это сделает "Foo is 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 );

Является ли это поведение документированным где угодно?

4b9b3361

Ответ 2

Это <%= %> встроенный блок кода и существует для обеспечения совместимости с классическим ASP.

Как вы видели, <%= "{0} is {1}", "Foo", 42 %> эквивалентен:

string s = string.Format("{0} is {1}", "Foo", 42);
Response.Write(s);

Это поведение документировано здесь:

Записывает форматированную строку, содержащую текстовое представление массива объектов к выходному потоку вместе с любым незавершенным интервалом вкладок. Этот метод использует ту же семантику, что и метод String.Format. (Переопределяет TextWriter.Write(String, Object []).)

Здесь указано, что код Render Block вызывает метод Write.

Наконец, синтаксис для встроенных кодовых блоков был обновлен для .NET 4, как описано здесь.