代码之家  ›  专栏  ›  技术社区  ›  Jason N. Gaylord

CloudScribe中页面路由上的动态模板或标题

  •  0
  • Jason N. Gaylord  · 技术社区  · 7 年前

    我希望能够根据我所在的内容页自定义视图所用的布局。例如,如果我在主页上,我可能希望有一个最初不呈现的标题,但是显示在屏幕上,并且是基于主页布局的不同颜色。如果我可以在其他页面上这样做,或者至少在服务器端使用Razor覆盖视图渲染,那就太好了。我不确定自定义视图模板是否是另一个选项。说到这个项目,我是个笨蛋,所以任何建议都会受到赞赏。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Joe Audette    7 年前

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

    因此,例如,如果您的主页使用SimpleContent,那么您可以复制 Page/Index 查看您的本地项目。在视图文件夹下创建一个页面文件夹,并将索引视图复制到该文件夹中,您可以添加任何自定义逻辑或其他部分视图。如果需要,还可以有条件地将javascript或css添加到@section scripts或@section style_中。您可以将自己的定制服务注入视图中,以封装您想要使用的任何逻辑。根据您想做什么,您可能还需要重写pagedetailpartial视图。

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

    @{
        Layout = "_MyCustomLayout";
     }
    

    或者甚至添加一些条件逻辑来使用每个URL的不同布局。这将覆盖从viewstart.cshtml设置的默认布局。您还可以在上面提到的任何视图子文件夹ie page文件夹中放置\u viewsstart.cshtml文件,以使该文件夹中的所有视图都使用特定的布局。只能为主视图而不是局部视图设置视图布局。

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

    CloudScribe SimpleContent使用具有命名路由的常规路由。在我们的项目模板中,您将看到添加默认路由的/config/routingandmvc.cs扩展方法。如果要更改路由,可以对其进行注释,并使用相同的路由名称自行添加路由。最简单的方法是将代码从这些扩展方法复制到您自己的扩展方法中,并根据需要修改它们,然后使用扩展方法。您可以找到SimpleContent路由 here

    CloudScribe核心只使用控制器和操作上的默认路由匹配,它不注册路由,只使用常规约定。

    推荐文章