CascadingDropDown в модуле DotNetNuke => [Ошибка метода 500]

Я создаю модуль DotNetNuke 4.x, и мне нужен AJAX CascadingDropDown в моем модуле. У меня это определяется следующим образом...

<asp:UpdatePanel runat="server" ID="CascadingDropDowns">
    <ContentTemplate>
        <asp:DropDownList runat="server" ID="SelectGroupDropDownList">
        </asp:DropDownList>
        <ajax:CascadingDropDown runat="server" ID="SelectGroupDropDownListExtender" Category="Group" 
            TargetControlID="SelectGroupDropDownList" PromptText="Select a Group" ServiceMethod="GetGroups">
        </ajax:CascadingDropDown>
        <!-- more dropdowns & cascadingdropdown extenders here -->

С методом страницы, определенным в коде ascx, как это...

[WebService]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService()]
public partial class EligibilityView : PortalModuleBase
{
    [WebMethod]
    [ScriptMethod]
    public CascadingDropDownNameValue[] GetGroups(string knownCategoryValues, string category)
    {
        var results = new List<CascadingDropDownNameValue>();

        // code here to fill the list with values...

        return results.ToArray();

    }

Когда я запускаю страницу, я получаю «[Ошибка метода 500]» и не могу понять, что, черт возьми, я делаю неправильно. Я думаю, что проблема в том, что страница не может найти веб-метод, потому что он определен внутри элемента управления ASCX, а не на самой странице. Мне нужно сохранить его таким, а не создавать службу ASMX, поскольку она будет скомпилирована в модуль для DotNetNuke, и я хочу, чтобы внутри модуля все было просто.

Любые предложения будут ценны.


person Scott Ivey    schedule 25.02.2009    source источник


Ответы (1)


Я не думаю, что будет простой способ получить доступ к этому методу веб-службы, пока он находится в ASCX. «Простой» в данном случае, вероятно, означает добавление ASMX в модуль.

Есть ли причина, по которой вы думаете, что добавление ASMX будет проблемой?

Добавление другого файла в пакет модуля должно включать тот же процесс, что и для добавления самого элемента управления. В манифесте вам просто нужно указать его в разделе файлов, а затем убедиться, что он попадает в пакет. Вы также можете использовать ZIP-файл ресурсов в пакете и просто указать этот ZIP-файл, убедившись, что ваши файлы .ascx и .asmx (и любые другие файлы содержимого) находятся там.

person bdukes    schedule 25.02.2009
comment
Я пытался сохранить методы страницы в ascx, чтобы упростить развертывание. Я довольно новичок в nuke — последний раз, когда я смотрел на него, вероятно, была версия 1 — поэтому не был уверен, что добавление файла asmx в микс усложнит упаковку и развертывание. - person Scott Ivey; 25.02.2009
comment
Я могу поручиться за упаковку и развертывание файла asmx, который ничем не отличается от любого другого ресурса (.ascx, .gif, .js, .doc и т. д.). - person Ian Robinson; 25.02.2009