Это работает также.
select *
into #so20150909
from table
where 1=0
Людям действительно нравится беспокоиться о накладных расходах, связанных с рефлексией. Однако за пределами синтетических тестов это становится довольно скучной темой!
В контексте реального производственного приложения (например, когда вы выполняете операции CRUD с базами данных или используете веб-сервис), накладные расходы на использование помощников HTML составляют будет незначительным по сравнению с накладными расходами на выполнение такого рода переключения контекста.
На самом деле не о чем беспокоиться, особенно с учетом преимуществ, которые предоставляют помощники HTML, такие как автоматическое восстановление значений формы из ViewData / Model и поддержка проверки.
Итог: по возможности используйте помощники html. Вы всегда можете использовать прямой HTML-код, если столкнетесь с редким ограничением, которое необходимо обойти.
Я сделал это обоими способами, и производительность кажется примерно такой же. Фил Хаак говорит, что вы можете сделать это в любом случае - что помощники - это всего лишь помощники, и, если хотите, вы можете написать простой старый HTML.
Я не уверен, что помощники есть какие-то безопаснее ... в любом случае вы получите тот же HTML-код на веб-странице ... но intellisense, похоже, по какой-то причине работает лучше в помощниках, что приятно.
Выпадающие списки легче создавать с помощью помощников, поскольку вам не нужно запускать цикл для списка выбора. Скрытые поля и текстовые поля (а также ссылки), на мой взгляд, выглядят лучше в простом HTML, особенно если они содержат несколько атрибутов, поскольку вы можете избежать этого синтаксиса инициализации объекта.
Обычный HTML хорошо сочетается с jQuery ( см. Здесь пример ). А простой HTML легче читать.
Я полагаю, что вспомогательные методы могут быть полезны, когда вы хотите добавить в html более крупную структуру. Через несколько месяцев вы найдете веб-сайты, богатые этими методами, которые будут поддерживать все виды функций. Представьте, что вы можете добавить график на свою страницу с помощью одной строчки кода.
В HtmlHelpers нет никакого отражения. Последний параметр не является объектом, это словарь, поэтому поиск значений осуществляется через хеш-таблицу, а не отражение. HtmlHelper хорош тем, что его методы безопасны и надежны ... ввод кодируется там, где необходимо, проверки безопасности выполняются там, где это необходимо, и т. Д. HtmlHelpers - это гораздо больше, чем просто рендеринг HTML.
Результаты действия вашего контроллера (вызванного GET) во многих случаях должны быть кэшированы для достижения хорошей производительности. Поэтому вам не следует беспокоиться о времени выполнения вашего представления. Мне трудно представить ситуацию, когда время выполнения вашего HtmlHelper может стать узким местом производительности.