Помощь в проектировании ASP.NET MVC HtmlHelper API

Я работаю над составной библиотекой ресурсов среды выполнения для ASP.NET WebForms / MVC. Поддерживаю оба стандартных ASP. NET WebForms через WebControls, а также недавно добавили поддержку ASP MVC Html Helpers. Одной из функций, которую я в настоящее время поддерживаю с помощью WebForms WebControls, является концепция «частичных» определений ресурсов, в которой ресурс может быть объединен на страницах Master / View и т. Д.

При реализации эквивалента MVC я не уверен, что лучше всего использовать является? В настоящее время я склоняюсь к созданию чего-то вроде:

Главная страница

<% using (Html.CreateCompositeResourcePartContext())
   {
     Html.CompositeCssResourcePart(
       "ResourceName", 
       new[] { "/Styles/SharedStyle1.css", "/Styles/SharedStyle2.css" }
     );
     %>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
<% } %>

, которая создаст «контекстную» оболочку вокруг заголовка ContentPlaceholder.

Страница просмотра

<asp:Content ID="HeadContentPlaceholder" ContentPlaceHolderID="head" runat="server">
  <% Html.CompositeCssResourcePart(
     "ResourceName", 
     new[] 
     {
       "/Styles/PageStyle5.css",
       "/Styles/PageStyle6.css",
       "/Styles/PageStyle7.css"
     }) %>
</asp:Content>

Таким образом, любые страницы просмотра могут расширять частичное определение ресурса, как показано выше.

У меня есть вопросы:

1) В отличие от всех моих других HtmlHelpers, эти расширения не сразу записывают HTML фрагмент, а лучше подождите, пока контекст не будет удален. Должны ли эти расширения быть за пределами ViewContext (или какого-либо другого объекта)?

2) Я лично считаю, что концепция «использования» имеет смысл заключать в оболочку блок кода, а не отдельные вызовы BeginCompositeResourcePartContext / EndCompositeResourcePartContext, вы согласны? Если нет, что лучше в отдельных вызовах методов?

Мы будем очень благодарны за любые отзывы по вышеизложенному. Если требуются более подробные сведения, пожалуйста, дайте мне знать.

Изменить

Чтобы уточнить ... блок внутри заголовка главной страницы и последующая ссылка сбоку от страницы просмотра будут объединены вместе в один ресурс . Поэтому, когда контекст CompositeResourcePartContext удаляется, все ШЕСТЬ файлов объединяются в только ОДИН файл css и записываются как тег с одной ссылкой (или скрипт, css sprite и т. д.)

<link rel="stylesheet" type="text/css" href="/MyMergedStyleSheet.css" />
7
задан Chris Baxter 2 November 2010 в 13:13
поделиться