【问题标题】:Net Core 2 / Razor - theming(views, not css only)Net Core 2 / Razor - 主题(视图,不仅仅是 css)
【发布时间】:2018-01-31 19:25:35
【问题描述】:

我正在寻找允许我根据会话中设置的内容提供不同模板的解决方案(中间件将根据域进行设置)。

我一直在寻找的是,当设置主题时,假设要渲染某些视图时,mvc 会从特定主题渲染视图。

如何使用 net core 2、mvc 和 razor 做到这一点?如果添加主题不需要重新编译(例如,类似于 Wordpress - 上传包含所有必需文件的 zip 文件),那就太好了。

我真的不知道从哪里开始......

我试图用谷歌搜索一些解决方案,但我发现只有一个完全过时了。

【问题讨论】:

    标签: c# razor asp.net-core asp.net-core-mvc


    【解决方案1】:

    基本上,您只需要自定义 Razor 搜索视图的目录列表。默认情况下,它们是Views\{controller}Views\Shared。您只需要做到这一点,而是(或者,如果特定主题选择不提供视图,则可以退回到“基本”主题){theme}\Views\{controller}{theme}\Views\Shared,或类似的东西。

    不幸的是,documentation 在这里没有提供太多支持。你得到的只是:

    您可以使用自定义 IViewLocationExpander 自定义视图在应用中的位置方式的默认约定。

    顾名思义,这是 Razor 用于获取位置列表以在其中搜索视图的接口。换句话说,您只需创建自己的实现,然后将其注入。像LanguageViewLocationExpander 这样的东西应该让你知道你需要做什么,因为基本原理是一样的。它用于本地化并提供将视图嵌套在特定语言文件夹下的能力。

    【讨论】:

    • 这种方法效果很好,我已经实现了
    猜你喜欢
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2019-10-16
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多