我是 Sitefinity 的新手,目前正在从事 Sitefinity 15 项目。
我已将自定义占位符(语言选择器)添加到我的 MVC 视图 (NavigationView.cshtml),如下所示:
@model Telerik.Sitefinity.Frontend.Navigation.Mvc.Models.INavigationModel
@using Telerik.Sitefinity.Frontend.Mvc.Helpers;
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container px-5">
<a class="navbar-brand" href="/">Test Site</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
<div class="collapse navbar-collapse" id='@Html.UniqueId("navbar")'>
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
@{
int i = 0;
foreach (var node in Model.Nodes)
{
@RenderRootLevelNode(node, i);
i++;
}
}
</ul>
<!-- Add your placeholder here -->
@Html.SfPlaceHolder("language-selector")
</div>
</div>
</nav>
@* Helper methods and rendering logic *@
但是,在编辑页面时,我无法在 Sitefinity CMS 中查看或配置语言选择器占位符。
采取的步骤:
添加了@Html.SfPlaceHolder(“语言选择器”) 导航视图.cshtml.
将模板分配给相关页面 网站有限性。
尝试将小部件拖放到占位符区域 在 CMS 中编辑页面时。
问题:
请求帮助:
我是否缺少特定的步骤或配置来制作 语言选择器占位符在 Sitefinity CMS 中可见吗?
我是否需要注册占位符或配置其他内容 Sitefinity 可以进行编辑吗?
任何指导或建议将不胜感激。预先感谢您!
致以诚挚的问候,
苏雷什·拉亚拉库拉
您只能在布局视图(您的基本页面模板)中使用
@Html.SfPlaceHolder
,不能在另一个小部件的视图中使用它。
如您所见,导航小部件需要一个 INavigationModel 类型的模型。
想象一下,您将一个语言选择器小部件放入其中,语言选择器小部件将如何获得自己的模型?
这就是为什么它不能那样工作。
因此,您需要稍微修改一下 html。 这就是我要做的:
在您的基本页面模板中输入以下代码:
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container px-5">
<a class="navbar-brand" href="/">Test Site</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"><span class="navbar-toggler-icon"></span></button>
<div class="collapse navbar-collapse" id='@Html.UniqueId("navbar")'>
@Html.SfPlaceHolder("TopNav")
<!-- Add your placeholder here -->
@Html.SfPlaceHolder("language-selector")
</div>
</div>
</nav>
注意,TopNav 有一个新的 SfPlaceholder。
然后,将导航小部件放入 TopNav 区域内,然后将此 html 放入导航小部件的视图中:
<ul class="navbar-nav ms-auto mb-2 mb-lg-0">
@{
int i = 0;
foreach (var node in Model.Nodes)
{
@RenderRootLevelNode(node, i);
i++;
}
}
</ul>