Я хочу создать многократно используемые виджеты для веб-сайта, созданного с помощью ASP.NET MVC и Razor. По сути, я хочу, чтобы в моем представлении было какое-то содержимое, а перед этим и после него отображался HTML, например, такой псевдокод:
@widget("MyWidget")
{
This is the content.
}
MyWidget.cshtml
будет содержать макет виджета, а при вызове @RenderBody
из макета будет выводиться This is the content
.
Моя текущая реализация требует, чтобы я поместил содержимое виджета в отдельный файл от представления, и я хотел бы избежать этого.
На мой взгляд, я могу отобразить виджет, вызвав Html.Partial
, например:
<div class="col_6 last">
@Html.Partial(@"Widgets\MyWidget")
</div>
Частичное MyWidget.cshtml
содержит только содержимое виджета, а фактический виджет "chrome" помещается в WidgetLayout.cshtml, на который ссылается частичное, как это:
@{
Layout = "/Views/Shared/WidgetLayout.cshtml";
}
<p>
This is the widget content.
</p>