【问题标题】:CascadingDropDown in a DotNetNuke module => [Method error 500]DotNetNuke 模块中的 CascadingDropDown => [方法错误 500]
【发布时间】:2009-02-25 17:10:11
【问题描述】:

我正在创建一个 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]” - 并且无法弄清楚我到底做错了什么。我认为问题在于页面找不到 webmethod,因为它是在 ASCX 控件中定义的,而不是页面本身。我确实需要以这种方式定义它 - 而不是创建 ASMX 服务 - 因为这将被编译为 DotNetNuke 的模块,我希望在模块内部保持简单。

任何建议将不胜感激。

【问题讨论】:

    标签: .net-3.5 ajaxcontroltoolkit dotnetnuke cascadingdropdown


    【解决方案1】:

    我认为在 ASCX 中没有一种简单的方法可以访问该 Web 服务方法。在这种情况下,“简单”可能意味着向模块添加一个 ASMX。

    您是否有理由认为添加 ASMX 会成为问题?

    将另一个文件添加到模块包应该涉及与添加控件本身相同的过程。在清单中,您只需要在文件部分中指定它,然后确保它最终出现在包中。您还可以使用包中的资源 zip 文件并指定该 zip,确保您的 .ascx 和 .asmx 文件(以及任何其他内容文件)在其中。

    【讨论】:

    • 我试图将页面方法保留在 ascx 中只是为了简化部署。我对 nuke 还很陌生 - 上次我查看它可能是版本 1 - 所以不确定添加 asmx 文件是否会使打包和部署更加困难。
    • 我可以保证打包和部署的 asmx 文件与任何其他资源(.ascx、.gif、.js、.doc 等...)实际上没有什么不同
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多