【问题标题】:In Sitefinity 11 - Possible to generate custom html/script to html section or tag in base template via MVC widget在 Sitefinity 11 中 - 可以通过 MVC 小部件在基本模板中生成自定义 html/脚本到 html 部分或标记
【发布时间】:2019-01-24 20:23:40
【问题描述】:

我想我应该首先提到我对 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"方法。

感谢您提供的任何见解。

【问题讨论】:

    标签: asp.net-mvc-5 sitefinity


    【解决方案1】:

    解决这个问题的一种方法是在您的主布局 cshtml 文件中创建一个新的“占位符区域”,就在结束正文标记的正上方。

    例子:

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

    这将在 Sitefinity 页面编辑模式下创建一个可拖动区域,因此您可以将任何您想要的小部件拖到该区域,包括内容块小部件(适用于任意 html)或 Javascript 小部件(适用于任何 js 代码)。

    official documentation 中有关 sfPlaceHolder 的更多详细信息。

    【讨论】:

    • 非常感谢 Veselin!您的方法满足了我的需求,并且比我尝试做的更简单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多