我环顾四周,并没有找到解决问题的方法。我有一个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
,但这只会造成混乱。
我希望这次编辑可以为能够帮助我的人提供更多见解。
答案 0 :(得分:1)
我想我自己想出了这个。使用调试控制台,我能够看到鼠标悬停正在向主页面发出webservice调用(其代码我无法操作)并调用Web服务方法。我实际上在页面正在使用的用户控件(.ascx)中创建了webservice。这似乎不起作用。我最终完全剥离了Web服务,并创建了自己的.asmx文件,然后添加了DynamicServicePath属性以指向独立的Web服务。我希望我不得不求助于一个完全独立的网络服务,但无论如何,它都有效。
答案 1 :(得分:1)
如果在页面上声明了( DynamicServiceMethod )方法,则该方法应为'static',但是,如果您将方法托管在(< em> DynamicServicePath )。asmx,则不应将该方法声明为'static'。
这不容易调试和弄清楚..
答案 2 :(得分:1)
通常,当我们的查询中有任何错误时,将显示Web服务调用失败500.我已通过检查查询中的错误并更正它来解决此问题。 在我们的查询中更正错误后,弹出控件将显示..