Create and Call HttpHandler in SharePoint
Posted gavanwanggw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Create and Call HttpHandler in SharePoint相关的知识,希望对你有一定的参考价值。
Create and Call HttpHandler in SharePoint
Requirement:
1. Create a httphandler, and reture json data when call the httphandler in client.
2. Create a list named "Products", including a column named "FeaturedProduct" which of type is Boolean and the column named "ProductCategory" which of type is metadata
3. In server, return the json that the value of the field named "FeaturedProduct" is Yes.
4. In client, get the json data with the url
Here is the steps:
1. Create sharepoint project and httphandler class
according the steps
2. Here is the code to create httphandler class in vs(using System.Web.Extentions), then deploy.
using System; using Microsoft.SharePoint; using Microsoft.SharePoint.WebControls; using System.Web; using System.Web.Script.Serialization; using Microsoft.SharePoint.Taxonomy; using System.Collections.Generic; namespace Testashx { public partial class Test : IHttpHandler { public bool IsReusable { get { return true; } } //http://webUrl/_layouts/15/handler/Test.ashx?featuredProduct=1 public void ProcessRequest(HttpContext context) { javascriptSerializer jsonSerializer = new JavaScriptSerializer(); context.Response.ContentType = "application/json"; int featured = int.Parse(context.Request.QueryString.Get("featuredProduct")); List<Product> jsonResult = new List<Product>(); string caml = string.Empty; try { SPContext currentContext = SPContext.Current; SPWeb web = SPContext.Current.Web; SPList list = web.Lists["Products"]; caml = "<Where>"+ "<Eq>"+ " <FieldRef Name=‘FeaturedProduct‘ /> "+ "<Value Type=‘Boolean‘>" + featured + "</Value>" + "</Eq>"+ "</Where>"; SPQuery query = new SPQuery(); query.Query = caml; //query.ViewFields = "<ViewFields><FieldRef Name=‘ProductCategory‘/><FieldRef Name=‘Size‘/></ViewFields>"; SPListItemCollection items = list.GetItems(query); foreach (SPListItem item in items) { Product product = new Product(); if (item["ProductCategory"] as TaxonomyFieldValueCollection != null) { TaxonomyFieldValueCollection taxonomyFieldValueCollection = item["ProductCategory"] as TaxonomyFieldValueCollection; if (taxonomyFieldValueCollection.Count > 0) { product.ProductCategory = taxonomyFieldValueCollection[0].Label; } } product.Size = item["Size"].ToString(); jsonResult.Add(product); } } catch (Exception ex) { context.Response.Write(ex.Message); } context.Response.Write(jsonSerializer.Serialize(jsonResult)); } } class Product { public string ProductCategory { get; set; } public string Size { get; set; } } }
3. In client, here is the code for call service
$.ajax({ url: "http://webUrl/_layouts/15/handler/Test.ashx?featuredProduct=0", type: "get", dataType:"json", success: function (data) { var html = ""; $.each(data, function (index, key) { html += "<div>" + key.ProductCategory + "</div>"; html += "<div>" + key.Size + "</div>"; }); $("#myDiv").append(html) ; } });
Note: "featuredProduct=0" is Variable
以上是关于Create and Call HttpHandler in SharePoint的主要内容,如果未能解决你的问题,请参考以下文章
[JavaScript-Function] Function Invocation/Call(函数调用) 以及call() and apply() 方法
CALLING PROCEDURES USING CALL AND RET
致命错误:CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足错误
NodeJs:- 92% 块资产优化 TerserPlugin 致命错误:CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足