异步加载果园自定义小部件

时间:2014-11-25 12:51:22

标签: c# asp.net ajax asp.net-mvc orchardcms

我使用一些示例编写了自定义模块。我正在使用ContentPartDriver继承的类来呈现结果......

例如:

        protected override DriverResult Display(ContentPickerPart part, string displayType, dynamic shapeHelper) {
        string IWSUrl = IWSUrlRuleProvider.BuildIWSUrl(part);
        var lstTypeItems = _contentpicker.GetItems(IWSUrl);

        return ContentShape("Parts_ContentPicker", () => shapeHelper.Parts_ContentPicker(
                    Items: (lstTypeItems as List<Item>)));
    }

模块正在请求Web服务获取一些信息......因为有很多信息需要大约400ms来调用Web服务... 我每页大约有10个相同的模块,渲染时需要400 * 10秒......

如何在orchard cms中异步呈现此模块?(因此将呈现页面,并且每个模块都会有ajax调用之后)

由于

2 个答案:

答案 0 :(得分:3)

您可以在页面从零件视图加载到控制器之后创建控制器并进行ajax调用,然后控制器将调用您的服务,或者您可以尝试使用ajaxify小部件,该小部件仅在加载小部件之后页面已加载,但我从未真正尝试过它:) Ajaxify

答案 1 :(得分:2)

您可以使用此模块使您的小部件异步加载:

http://orchardmarket.net/Catalog/Modules/ideliverable-widgets

http://gallery.orchardproject.net/List/Modules/Orchard.Module.IDeliverable.AjaxWidget

我们在1.7.x Orchard网站上使用过它,并且工作顺利。