Asp.net mvc 5 在SiteFinity11中-可以通过MVC小部件在基本模板中生成自定义html/脚本到html节或标记

Asp.net mvc 5 在SiteFinity11中-可以通过MVC小部件在基本模板中生成自定义html/脚本到html节或标记,asp.net-mvc-5,sitefinity,Asp.net Mvc 5,Sitefinity,我想我应该首先提到,我对Sitefinity和MVC都比较陌生,我感谢您的帮助。到目前为止,我在这个问题上的研究结果是空的 因此,我们希望通过一个小部件将自定义html和/或脚本放置在网页的body标记的末尾,我们可以将其放到特定的页面或页面模板上。我愿意接受任何关于实现这一点的建议,但到目前为止,我一直在尝试通过放置在自定义基础模板上的引用来实现这一点 在.cshtml中,我注意到默认情况下Sitefinity有@Html.Section(“head”)、@Html.Section(“top”

我想我应该首先提到,我对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>
}
@section-MyOtherJavascript
{
//一些代码
}
但当我这样做时,会出现如下错误:

无法直接请求[layoutname].cshtml”,因为它调用“IsSectionDefined”方法


感谢您提供的任何见解。

实现这一点的一种方法是在主布局cshtml文件中的结束正文标记正上方创建一个新的“占位符区域”

例如:

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

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

@Html.SfPlaceHolder(“标题”)
@Html.SfPlaceHolder(“Main”)
@Html.SfPlaceHolder(“页脚”)
@SfPlaceHolder(“BeforeClosingBody”)
这将在Sitefinity页面编辑模式下创建一个可拖动区域,因此您可以将任何想要的小部件拖动到此区域,包括内容块小部件(用于任意html)或Javascript小部件(用于任意js代码)


有关sfPlaceHolder的更多详细信息,请参见。

非常感谢Veselin!您的方法满足了我的需要,是一个比我尝试的更简单的解决方案。