В Sitefinity 11 - Возможно генерировать пользовательский html / скрипт в html раздел или тег в базовом шаблоне через виджет MVC - PullRequest
0 голосов
/ 24 января 2019

Полагаю, мне следует начать с упоминания, что я относительно новичок и в Sitefinity, и в MVC, и я ценю вашу помощь. Мои исследования по этой теме до сих пор оказались пустыми.

Итак, мы бы хотели разместить пользовательский html и / или скрипт в конце тега body на наших веб-страницах через виджет, который мы можем перетащить на определенную страницу или шаблон страницы. Я открыт для любых предложений по достижению этой цели, но пока я пытался сделать это с помощью ссылок, размещенных в нашем пользовательском базовом шаблоне.

В .cshtml я заметил, что по умолчанию у Sitefinity есть @ Html.Section ("head"), @ Html.Section ("top") и @ Html.Section ("bottom"). Есть ли способ, которым я могу написать непосредственно в этот «нижний» раздел из виджета или представления MVC?

Я пытался описать выше и другие подходы, такие как использование RenderSection в базовом макете:

@if (IsSectionDefined("MyOtherJavascript"))
{
   @RenderSection("MyOtherJavascript");
}

и затем в представлении виджета:

@section MyOtherJavascript 
{
   <script type="text/javascript">
     // some code
   </script>
}

но когда я делаю это, я получаю сообщение об ошибке, такое как:

[layoutname] .cshtml "нельзя запросить напрямую, поскольку он вызывает метод IsSectionDefined.

Спасибо за любые идеи, которые вы можете предоставить.

1 Ответ

0 голосов
/ 25 января 2019

Одним из способов решения этой проблемы является создание новой "области заполнителя" в файле cshtml основного макета прямо над закрывающим тегом body.

Пример:

<body>
@Html.SfPlaceHolder("Header")
@Html.SfPlaceHolder("Main")
@Html.SfPlaceHolder("Footer")

@Html.SfPlaceHolder("BeforeClosingBody")
</body>

Это создастперетаскиваемая область в режиме редактирования страницы Sitefinity, так что вы можете перетащить любой виджет в эту область, который вы хотите, включая виджет Content Block (для любого произвольного html) или виджет Javascript (для любого кода js).

Подробнееподробности о sfPlaceHolder в официальной документации .

...