繁体   English   中英

从应用名称获取2sxc应用ID

[英]get 2sxc app id from app name

我想使用另一个应用程式中的资料,例如程式

但是我想从应用名称或文件夹获取appId吗? 有什么方法可以做到这一点吗?

这是我的工作代码,具有获取AppId的功能:

public int GetAppIdFromName(string appName){
    foreach(var app in sxApps()) if (app.Name==appName) return App.AppId;
    return -1;
}

public int GetAppIdFromFolder(string appFolder){
    foreach(var app in sxApps()) if (app.Folder==appFolder) return App.AppId;
    return -1;
}

public List<ToSic.SexyContent.App> sxApps() 
{
    var zoneId=(int)ToSic.SexyContent.Internal.ZoneHelpers.GetZoneID(Dnn.Module.PortalID);
    var eavApps = ((ToSic.Eav.DataSources.Caches.BaseCache)ToSic.Eav.DataSource.GetCache(zoneId, null)).ZoneApps[zoneId].Apps;
    var ps = DotNetNuke.Entities.Portals.PortalSettings.Current;
    return eavApps.Select<KeyValuePair<int, string>, ToSic.SexyContent.App>(eavApp => new ToSic.SexyContent.App(zoneId, eavApp.Key, ps)).ToList();
}

这样行还是可以轻松完成?

====================添加======================

我将2sxc从8.7更新到了9.30,此代码不再起作用。

错误:

    Compiler Error Message: CS1502: The best overloaded method match for 'ToSic.SexyContent.App.App(ToSic.Eav.Apps.Interfaces.ITenant, int, ToSic.Eav.Logging.Simple.Log)' has some invalid arguments

Source Error:    
    Line 22:             return eavApps.Select<KeyValuePair<int, string>, ToSic.SexyContent.App>(eavApp => new ToSic.SexyContent.App(zoneId, eavApp.Key, ps)).ToList();

有人可以帮我将其转换为新版本吗? 我不了解新的ITenant如何工作。

============编辑2sxc版本9.30的新解决方案==============

public static List<ToSic.SexyContent.App> sxApps(int portalID) 
{
    var zm = new ToSic.SexyContent.Environment.Dnn7.ZoneMapper();
    var zoneId = zm.GetZoneId(portalID);
    var eavApps = ((ToSic.Eav.DataSources.Caches.BaseCache)ToSic.Eav.DataSource.GetCache(zoneId, null)).ZoneApps[zoneId].Apps;
    var ps = DotNetNuke.Entities.Portals.PortalSettings.Current;
    var tenant = new ToSic.SexyContent.Environment.Dnn7.DnnTenant(ps);
    return eavApps.Select<KeyValuePair<int, string>, ToSic.SexyContent.App>(eavApp => new ToSic.SexyContent.App(tenant, eavApp.Key)).ToList();
}

======================新编辑===================

在版本9.33上,东西再次制动...(在版本9.32.1上仍然有效)

编译器错误消息:CS1729:'ToSic.SexyContent.App'不包含带有2个参数的构造函数

第23行:返回eavApps.Select,ToSic.SexyContent.App>(eavApp => new ToSic.SexyContent.App(tenant,eavApp.Key))。ToList();

有人知道怎么修这个东西吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM