Kentico MVC 如何在_Layout.cshtml中动态获取首页URL
Kentico MVC 内置了对应的页面URL生成能力,可以完全动态获取首页路径,不需要硬编码,具体实现方式如下:
步骤1:在布局页顶部引入所需命名空间并注入服务
在你的 _Layout.cshtml 头部添加以下代码:
@using Kentico.Content.Web.Mvc @inject IPageUrlRetriever PageUrlRetriever @using CMS.DocumentEngine @using CMS.SiteProvider
步骤2:修改导航栏的首页a标签
你可以选择两种实现方案,按需选用:
方案1:直接调用站点默认首页(推荐,适配多语言、多站点场景)
直接替换你原来的a标签代码即可:<a href="@PageUrlRetriever.Retrieve(TreeProvider.RootNodes[SiteContext.CurrentSiteID]).AbsolutePath" title="SamedWear" class="logo">SamedWear</a>方案2:指定页面类型查询首页(更精准,避免根节点指向调整导致失效)
先在a标签上方加查询逻辑,再绑定href:@{ // 请将下面的MedioClinic.Home替换为你实际的首页页面类型编码 var homePage = DocumentHelper.GetDocuments("MedioClinic.Home") .OnCurrentSite() .TopN(1) .Published() .FirstOrDefault(); } <a href="@(homePage != null ? PageUrlRetriever.Retrieve(homePage).AbsolutePath : Url.Content("~/"))" title="SamedWear" class="logo">SamedWear</a>
方案优势
这种动态生成的方式会自动读取Kentico后台的页面配置,后续你在后台修改首页的URL别名、更换首页指向的页面、或者开启多语言功能,都不需要修改前端代码,URL会自动同步更新。
内容的提问来源于stack exchange,提问作者Samke11
相关产品推荐
相关产品推荐

