Итак, у меня есть случай, когда макет эволюционировал, чтобы усложниться. Там обычные вещи, такие как @section styleIncludes{ ... }
, затем другие разделы, которые определяют все виды вещей, которые каждая страница может при желании (но почти всегда), указывают на структуру текущей палитры страниц. Причина, по которой все эти разделы являются секциями, заключается в том, что они встроены в структуру макета.
Я нахожу, что делаю копии предыдущих страниц, потому что там 8 или около того разных разделов, вместо того, чтобы пытаться запомнить точное их правописание или копировать/вставлять кусочек еды.
Я думаю, что было бы лучше создать для них свободный API, так что у меня есть объект с 8 функциями, каждый из которых возвращает сам объект, поэтому вы можете сделать что-то вроде Sections.Style(некоторый шаблон текста MVC или бритва?). Breadcrumb (и т.д.)
Основная цель состоит в том, чтобы иметь возможность кодировать эти разделы в соответствии с руководством и сильно набирать имена вместо того, чтобы полагаться на отличную типизацию или копировать/вставлять.
Однако расширения/помощники в бритве возвращают MvcHtmlString, и я полагаю, что @section представлено чем-то совершенно другим.
Не просить вас написать полное решение для меня, а просто некоторые идеи о том, как это сделать.
Какой объект должен вернуть помощник для представления объявления @section
? I.e. аналогия MvcHtmlString.
Что бы вы предложили тип параметра для быстрых методов, например Style или Breadcrumb? Я бы хотел, чтобы бритва прошла аналогичную возможность писать бритву в фигурные скобки объявления раздела. Например, возможность доступа к локальным переменным, объявленным на странице бритвы, так же, как вы можете сделать с объявлением регулярного раздела. Мне не нужно что-то вроде конкатенации строк, например .SomeSection("<div...>Bunch of html stuffed in a string</div>")
Другими словами, если многие из моих страниц cshtml начинают что-то вроде
@{
string title = "Edit Person"
ViewBag.Title = title;
}
@section styles{
.someOneOffPageSpecificStyle { width:59px }
}
@section javascript{
//javascript includes which the layout will place at the bottom...
}
@section breadcrumb{
<a ...>Parent Page</a> > <a ...>Sub Page</a> > @title
}
Я бы предпочел бы, чтобы seom вроде беглого API, как это, не совсем для результирующего стиля кода, а скорее потому, что будет легче писать код и не иметь проблем с опечатками и т.д., так как intellisense будет помогать:
@{
string title = "Edit Person"
ViewBag.Title = title;
}
@Sections
.Styles(@<text>
.someOneOffPageSpecificStyle { width:59px }
</text>)
.Javascript(@<text>
//javascript includes which the layout will place at the bottom...
</text>)
.Breadcrumb(@<text>
<a ...>Parent Page</a> > <a ...>Sub Page</a> > @title
</text>)