但我想从应用名称或文件夹中获取 appId?有什么方法可以得到这个吗?
问问题
122 次
1 回答
0
这是我的工作代码,其中包含获取 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();
有人知道怎么修这个东西吗?
于 2016-08-01T09:26:43.103 回答