首页 > 解决方案 > Cloudscribe 中页面路由上的动态模板或标题

问题描述

我希望能够根据我所在的内容页面自定义用于视图的布局。例如,如果我在主页上,我可能希望有一个最初不呈现但在滚动上显示的标题,并且根据主页的布局呈现不同的颜色。如果我可以在其他页面上执行此操作,或者至少在服务器端使用 Razor 覆盖视图渲染,那就太好了。我不确定自定义视图模板是否是另一种选择。当谈到这个项目时,我是一个菜鸟,所以非常感谢任何指针。

标签: cloudscribe

解决方案


为方便起见,所有 cloudscribe 核心和 cloudscribe SimpleContent 视图都编译为 Razor 类库 nuget。但是您想要自定义的任何视图都可以从相应的 github 存储库复制到您的项目本地视图中,并且本地视图将始终优先。这样您就可以自定义任何视图。事实上,您甚至可以通过复制主题特定视图文件夹中的视图来自定义每个主题的视图。

例如,如果您的主页使用 SimpleContent,那么您可以将Page/Index视图复制到本地项目中。在 Views 文件夹下创建一个 Page 文件夹并将 Index 视图复制到那里,您可以添加任何自定义逻辑或其他部分视图。如果需要,您还可以有条件地将 javascript 或 css 添加到 @Section Scripts{} 或 @Section Style {}。您可以将自己的自定义服务注入到视图中,以封装您想要使用的任何逻辑。根据您想要执行的操作,您可能还需要覆盖 PageDetailPartial 视图。

主 _Layout.cshtml 已经在您的项目中,并且每个主题文件夹都有一个。因此,您已经可以自定义主布局。您还可以创建其他布局文件并设置要从主视图使用的布局。IE:

@{
    Layout = "_MyCustomLayout";
 }

甚至添加一些条件逻辑来为每个 url 使用不同的布局。这会覆盖从 _ViewStart.cshtml 设置的默认布局。您还可以将 _ViewStart.cshtml 文件放在任何视图子文件夹(即上面提到的页面文件夹)中,以使该文件夹中的所有视图都使用特定的布局。从视图中设置布局只能针对主视图而不是局部视图。

编辑:有关路由的评论中的其他问题

cloudscribe SimpleContent 使用带有命名路由的常规路由。在我们的项目模板中,您将在添加默认路由的 /Config/RoutingAndMvc.cs 扩展方法中看到。如果您想更改路由,您可以将它们注释掉并使用相同的路由名称自己添加路由。最简单的方法是将这些扩展方法中的代码复制到您自己的扩展方法中并根据需要修改它们,然后改用您的扩展方法。您可以在此处找到 SimpleContent 路线

cloudscribe Core 仅在控制器和操作上使用默认路由匹配,它不注册路由,仅使用常规约定。


推荐阅读