在ViewEngine覆盖中处理_Layout.cshtml渲染

时间:2012-05-08 13:58:42

标签: asp.net-mvc-3 razor viewengine

我有自己的Razor视图引擎实现,允许我处理部分视图和视图“提供”,以便我向客户端提供我的视图的本地化版本。

我使用protected override IView CreateView覆盖视图选择过程并注入语言识别逻辑。

我也有protected override IView CreatePartialView,但是当我加载一个假设要渲染我的_Layout.cshtml CreatePartialView的视图时,我没有加强。

我需要覆盖哪种ViewEngine方法来“捕获”_layout页面呈现以执行语言感知替换?

1 个答案:

答案 0 :(得分:0)

一种方法是通过设置Layout属性,从特定于语言的视图指定特定于语言的布局:

@{
    Layout = "~/Views/Shared/_Layout.french.cshtml";
}

这仍然不是一个好方法,因为它打破了整个“视图/语言”链接范例,它依赖于视图引擎覆盖代码。

但它更灵活,因为允许远离主视图命名约定。