Использование делегатов для рендеринга блоков html в asp.net - PullRequest
1 голос
/ 18 февраля 2010

Сегодня утром я подумал о аккуратном взломе, возможно, не оригинальном, но раньше такого не видел. Я не считаю это хорошей практикой, но может помочь, когда вам нужно многократно визуализировать блок кода на вашей странице и не хотите касаться другого кода или создавать другие файлы (частичные представления или компоненты).

В вашем файле .aspx создайте анонимного делегата, например:

<%
Action<DataType> renderMe = data => {
  %> Some html text <a href="<%= data.url %>">That can</a> contain quotes, etc. 
     And other <%= data.something %> stuff...
  <%
};
%>

Тогда вы можете просто использовать его где угодно: (myvar1 и myvar2 имеют тип DataType)

This is some html and I want the block here: <% renderMe(myvar1); %> ...
or maybe here <% renderMe(myvar2); %>

Я знаю, что это не очень хорошая идея, но кто-нибудь может увидеть какие-либо проблемы с этим?

1 Ответ

0 голосов
/ 18 февраля 2010

Это неплохо само по себе. Очень похоже на макросы Spark (это выглядит лучше, imho). Менеджер сценариев Рашуда (для расширенной инициализации js) использует ту же технику. Рендерер сетки MvcContrib делает то же самое.

Дело в том, что ниша, когда это подходит, действительно узкая. Только когда требуемый фрагмент HTML должен быть передан на серверную часть или когда вы хотите использовать его дважды или более в контексте одного конкретного представления, но не хотите создавать отдельный частичный просмотр.

...