Какая разница между этими подходами к ссылке в комплекте 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.