如何以编程方式禁用Orchard模块?

Gis*_*mby 6 orchardcms

从Migrations.cs,我想要禁用一个模块(如果已启用),如果尚未启用,则启用另一个模块.我怎样才能做到这一点?

Gis*_*mby 8

好的,我通过查看Orchard.Modules中的Controller和Command类来解决这个问题.首先,我必须向Orchard.Modules添加项目引用,然后在Migrations.cs中:

    public int UpdateFrom2() {
        var features = _moduleService.GetAvailableFeatures().ToDictionary(m=>m.Descriptor.Id, m=>m);
        if (features.ContainsKey("TinyMce") && features["TinyMce"].IsEnabled) {
            _moduleService.DisableFeatures(new string[] { "TinyMce" });
        }

        if (features.ContainsKey("TinyMceDeluxe") && !features["TinyMceDeluxe"].IsEnabled) {
            _moduleService.EnableFeatures(new string[] { "TinyMceDeluxe" });
        }

        return 3; 
    }
Run Code Online (Sandbox Code Playgroud)