对 Web 处理程序的 Webpart 调用

本文关键字:Webpart 调用 程序 Web 处理 | 更新日期: 2023-09-27 18:32:34

我有一个 webpart 调用 ASP.NET 处理程序来完成自动完成功能。

ASHX File
    <%@ WebHandler Language="C#" Class="MyService.MyAutoComplete" CodeBehind="MyAutoComplete.ashx.cs" %>

代码隐藏文件

namespace MyService
{
    /// <summary>
    /// Summary description for MyAutoComplete
    /// </summary>
    public class MyAutoComplete : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            var searchTerm = context.Request.QueryString["term"].ToString();
            context.Response.Clear();
            context.Response.ContentType = "application/json";

            var search = GetList();
            JavaScriptSerializer jsSerializer = new JavaScriptSerializer();
            string json = jsSerializer.Serialize(search);
            context.Response.Write(json);
            context.Response.End();
        }
    }
}

这是我的JQuery电话

$(function () {
            $("#<%= txtSearchInput.ClientID %>").autocomplete({
                source: "/_Layouts/My Service/MyAutoComplete.ashx",
                minLength: 2,
                select: function (event, ui) {
                    $(this).val(ui.item.value);
                }
            });
        });

"我的服务"是 Web 部件项目中的 SharePoint 布局文件夹。

当我通过 JQuery 进行调用时,它会抛出以下错误"无法创建类型'MyService.MyAutoComplete'"

任何帮助表示赞赏。

对 Web 处理程序的 Webpart 调用

实现 IHttpHandler 时,必须提供以下各项的实现:

  • ProcessRequest() 方法(你这样做),
  • IsReuseable 属性(您没有)。

因此,MyAutoComplete类不能实例化,因为它没有为IHttpHandler的所有抽象成员提供实现。

由于您的处理程序显然是无状态的,因此您可以按如下方式实现IsReusable

public bool IsReusable
{
   get {
       // Handler is stateless, we can reuse the same instance
       // for multiple requests.
       return true;
   }
}
SharePoint 组件

似乎有自己的方法来标识:)的组件。谷歌搜索后,我找到了以下解决方案。

<%@ WebHandler Language="C#"  Class="MyService.MyAutoComplete,MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=87c41094797c589e" %>