1

我环顾四周,并没有找到解决我问题的方法。我有一个 PopupControlExtender 不断给出“Web 服务调用失败:500”错误,而不是显示弹出窗口。我有一个带有 OnItemCreate 属性的数据网格,该属性可以正常工作以将 mouseouver 和 mouseout 属性分配给列中的图像。下面是包含 targetControl 图像和 AJAX 控件本身的列的代码。

这是ajax控件的代码:

           <asp:TemplateColumn
            HeaderText="Notes"
            SortExpression="note"
            ItemStyle-VerticalAlign="Top"
            HeaderStyle-HorizontalAlign="Center" 
            HeaderStyle-CssClass="colNotes"
            ItemStyle-HorizontalAlign="Center"
            ItemStyle-CssClass="colNotes">
            <ItemTemplate>
                <asp:Label ID="lblNotes" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "note") %>'></asp:Label>
                <%--<asp:HyperLink ID="lnkNotes" Visible='<%# DataBinder.Eval(Container.DataItem, "has_note") %>' Runat="server" Text="..." /> --%>
                <asp:Image ID="lnkNotes" runat="server" Visible='<%# DataBinder.Eval(Container.DataItem, "has_note") %>' ImageUrl="http://www.ezzylearning.com/tutorials/demos/images/magnify.gif" /> 
                <ajax:PopupControlExtender ID="PopupControlExtender1" runat="server"
                    PopupControlID="pnlPopupNotes" 
                    TargetControlID="lnkNotes" 
                    DynamicContextKey='<%# Eval("person_id") +","+Eval("group_id") %>'
                    DynamicControlID="pnlPopupNotes" 
                    DynamicServiceMethod="GetDynamicContent" Position="Bottom"> 
                </ajax:PopupControlExtender> 
            </ItemTemplate>
            </asp:TemplateColumn>

这是 DynamicServiceMethod 的代码(我故意将其剥离为一个简单的跨度以尝试显示某些内容)...

[System.Web.Services.WebMethodAttribute(),
    System.Web.Script.Services.ScriptMethodAttribute()]
    public static string GetDynamicContent(string contextKey) 
    {


       StringBuilder b = new StringBuilder(); 

       b.Append("<span>Hello!</span>");


       return b.ToString(); 
    }

这是我用作 PopupControlID 的面板...

<asp:Panel ID="pnlPopupNotes" runat="server">

因此,通过此设置,我成功获得了 mouseover/mousout 行为,但是在我希望看到 span 弹出窗口的地方,我看到了“Web Service call failed: 500”消息。关于我可能遗漏的任何想法?

编辑

我发现问题在于如何从页面调用 Web 服务。Web 服务实际上是在同一页面上的用户控件中构建的。当我将鼠标悬停并进行 Web 服务调用时,我看到它为尝试访问 Web 服务器而创建的 URL 应该是http://mydomain/default.aspx/GetDynamicContent它应该更像的位置http://mydomain/default.aspx/Usercontrols/parentUserControl.ascx/GetDynamicContent但是,我不知道如何修改它正在调用的 URL。我尝试将 DynamicServiceMethod 属性值从 "GetDynamicContent" 更改为http://mydomain/default.aspx/UserControls/parentUserControl.ascx/GetDynamicContent,但这只会造成混乱。

我希望此编辑可以为可以帮助我的人提供更多见解。

4

3 回答 3

1

我想这是我自己想出来的。使用调试控制台,我能够看到鼠标悬停正在向主页(我无法操作其代码)发出 Web 服务调用并调用 Web 服务方法。我实际上已经在页面使用的用户控件 (.ascx) 中创建了 Web 服务。这似乎不起作用。我最终完全剥离了 Web 服务,并创建了自己的 .asmx 文件,然后添加了 DynamicServicePath 属性以指向独立的 Web 服务。我希望我不得不求助于一个完全独立的 Web 服务,但无论如何,它都有效。

于 2014-01-16T16:04:48.700 回答
1

如果您在同一页面上声明 ( DynamicServiceMethod ) 方法,则该方法应为'static',但是,如果您将该方法托管在 ( DynamicServicePath ) .asmx 上,则不应将该方法声明为'static'
这不容易调试和弄清楚..

于 2015-05-13T20:34:30.440 回答
1

通常,当我们的查询中有任何错误时,将显示 Web 服务调用失败 500。我已经通过检查查询中的错误并更正它来解决这个问题。在更正我们的查询弹出控件中的错误后将显示..

于 2016-02-08T07:38:43.223 回答