zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    输入一个正整数n (1<n<=10),生成 1个 n*n 方阵 求出对角线之和
    关闭ubuntu讨厌的内部错误提示
    ubuntu14.04通过 gvm 安装 go语言开发环境
    codeblocks 控制台输出乱码
    opensuse13.2安装 sass和compass
    执行npm publish 报错:403 Forbidden
    执行npm publish 报错:401 Unauthorized
    使用form表单提交请求如何获取后台返回的数据?
    vscode学习(三)之如何修改打开终端的默认shell
    Agreeing to the Xcode/iOS license requires admin privileges, please run “sudo xcodebuild -license” a...
  • 原文地址:https://www.cnblogs.com/gavanwanggw/p/6884956.html
Copyright © 2011-2022 走看看