在Razor视图中使用OR运算符实现Umbraco多站点首页筛选
Umbraco多站点获取指定类型首页的正确实现
你的原代码存在Lambda表达式语法错误,|| 后面重复声明了参数 x =>,导致逻辑无法正确执行。以下是修正后的实现方案:
基础修正版
直接修正Lambda表达式的写法,确保在同一个参数下判断两个别名条件:
var homePage = Model.Root().FirstOrDefault(x => x.ContentType.Alias == "XXXX" || x.ContentType.Alias == "YYYY");
更易维护的版本
如果后续可能新增首页类型,可以把允许的别名存入数组,用Contains判断,提升代码可扩展性:
var allowedHomeAliases = new[] { "XXXX", "YYYY" }; var homePage = Model.Root().FirstOrDefault(x => allowedHomeAliases.Contains(x.ContentType.Alias));
多站点精准定位版
多站点场景下,Root()会返回所有站点的根节点,若要确保获取当前请求对应的站点首页,可结合Site()方法定位当前站点后再查询:
// 获取当前站点的根节点 var currentSite = Model.Site(); // 在当前站点范围内查找指定类型的首页 var homePage = currentSite.DescendantsOrSelf().FirstOrDefault(x => x.ContentType.Alias is "XXXX" or "YYYY");
内容的提问来源于stack exchange,提问作者troshan
相关产品推荐
相关产品推荐

