Какая разница между этими подходами к ссылке в комплекте CSS в ASP.NET Web Forms 4.5?

Я использовал Visual Studio 2012 и встроенный шаблон (в разделе Add → New Project), чтобы создать совершенно новый веб-проект ASP.NET Web Forms, ориентированный на .NET Framework 4.5. Внутри страницы Site.Master, предоставленной по умолчанию, я вижу некоторую разметку, которая включает CSS на странице, которая выглядит следующим образом:

<webopt:BundleReference runat="server" Path="~/Content/css" />

Однако я заметил, что вместо этого могу использовать этот другой код.

<%: Styles.Render("~/Content/css") %>

Когда я смотрю на визуализированную страницу, результат оказывается одним и тем же. В чем разница между использованием webopt: BundleReference и использованием Styles.Render?

Один из них лучше подходит, чем другой?

Ответ 1

Синтаксис <%: Styles.Render %> предназначен для ASP.NET MVC (который не может использовать элементы управления ASP.NET, поскольку для них не существует реального контекста страницы). Элемент BundleReference предназначен для WebForms.

ASP.NET MVC может использовать WebForms в качестве механизма просмотра в качестве альтернативы Razor (где вы видите слишком много символов "@" ), поэтому есть немного кроссовера.

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

Ответ 2

Когда я смотрю на визуализированную страницу, результат оказывается одинаковым вещь. В чем разница между использованием webopt: BundleReference и используя Styles.Render?

Как понятно, BundleReference используется не только для включения script и ссылок на стиль, но и для объединения их вместе для повышения эффективности полосы пропускания. См. Учебник Сочетание и минимизация. Я думаю, что последнее является просто помощником для включения одного или нескольких сценариев, которые соответствуют шаблону URL.