You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在继承Custom.Hybrid.Razor14的2sxc v16.5.0 cshtml中获取Portal名称

解决方案:在2sxc Hybrid Razor中获取Dnn Portal名称

核心思路

你的视图继承Custom.Hybrid.Razor14(属于2sxc Hybrid模式),无需额外创建辅助类,直接通过2sxc内置API即可获取Dnn Portal信息,完全不用依赖传统Dnn Razor基类的PortalSettings,同时保留Kit属性的使用权限。

具体实现方式

方式1:直接通过Kit.Dnn获取Portal名称

在你的CSHTML文件中直接调用:

@{
    var portalName = Kit.Dnn.Portal.Name;
}

Kit.Dnn是2sxc Hybrid模式内置的Dnn上下文对象,包含当前Portal的所有核心信息,无需额外继承Dnn特定基类。

方式2:获取底层PortalSettings实例

如果需要操作PortalSettings的其他属性,可通过2sxc服务定位器获取:

@{
    using DotNetNuke.Entities.Portals;
    var portalSettings = GetService<PortalSettings>();
    var portalName = portalSettings.PortalName;
}

注意需要引入DotNetNuke.Entities.Portals命名空间。

修复你尝试的辅助类写法

你之前的DnnHelper报错是因为CodeTyped基类不会自动注入Dnn上下文,正确写法应为:

using System;
using ToSic.Sxc.Data;
using DotNetNuke.Entities.Portals;

public class DnnHelper : Custom.Hybrid.CodeTyped
{
    public string GetPortalName()
    {
        var portalSettings = GetService<PortalSettings>();
        return portalSettings.PortalName;
    }
}

在CSHTML中调用:

@{
    var helper = CreateInstance<DnnHelper>();
    var portalName = helper.GetPortalName();
}

关键说明

  • Custom.Hybrid.Razor14已集成2sxc核心服务,无需切换到Dnn基类即可访问Dnn上下文
  • Kit属性作为Hybrid模式核心入口,同时支持元标签修改与Dnn信息获取,完全满足你的需求

内容的提问来源于stack exchange,提问作者Constantine Ketskalo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 07:42:44