对 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'"
任何帮助表示赞赏。
实现 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" %>