MOSS 2007 Web 部件中的 Ajax

问题描述 投票:0回答:2

我正在 MOSS 2007 中创建一个包含自动完成扩展程序的 Web 部件。

我通过在 web.config 中添加所有配置来启用 ajax 功能(示例此处

我的网络服务:

    [System.Web.Script.Services.ScriptService]
    public class AutoComplete : System.Web.Services.WebService
    {
        [System.Web.Services.WebMethod]
        [System.Web.Script.Services.ScriptMethod]
        public string[] GetCompletionList(string prefixText, int count)
        {
                    List<string> results = new List<string>();
                    results.Add("Here");
                    results.Add("Here");
                    results.Add("Here");
                    results.Add("Here");
                    results.Add("Here");
                    results.Add("Here");
                    results.Add("Here");
                    return results.ToArray();
         }
   }

我可以从网络浏览器访问网络服务。但是,autocompleteextender 不会调用我的网络服务。

我的 Web 服务 url:http://[myserver]/AutoComplete.asmx(我将其用作扩展程序的 ServicePath)。 我的 Web 部件页面:http://[myserver]/Pages/mypage.aspx

我还尝试在页面上添加日历扩展程序,日历呈现在文本框下方并显示为内联 html。奇怪。

任何想法都会有帮助。

谢谢

c# asp.net ajax web-services sharepoint
2个回答
0
投票

从您的 Web 服务 URL 来看,您似乎已将 Web 服务放入站点的根文件夹中。这将不起作用,因为该文件夹由 SharePoint VirtualPathProvider 处理,它将在内容数据库中查找文件。

您应该将您的Web服务放入子目录或12Hive\ISAPI或12Hive\LAYOUTS中,然后通过相应的调用它

http://[myserver]/_vti_bin/[Folder]/AutoComplete.asmx 

http://[myserver]/_layouts/[Folder]/AutoComplete.asmx 

0
投票

我不明白如果你使用 AJAX 为什么还需要 Web 服务?您只需将代码放入 Web 部件(或您构建的任何内容)中,然后在更新面板中进行回发以获取值。更容易实施/安装/调试/支持。

当然,关于网络服务的位置,前面的答案是正确的。我只是可以补充一点,通常的位置是 _vti_bin,而不是通常放置自定义 ASPX 页面的布局,但当然从技术上来说两者都可以工作。

请记住,您还应该使用代码或母版页标记向页面添加脚本管理器,否则它将无法工作,无论您是否在 web.config 中添加了 AJAX

© www.soinside.com 2019 - 2024. All rights reserved.