使用Sharepoint CSOM,如何在通过ID检索内容类型时检查null

时间:2019-05-12 18:36:40

标签: c# sharepoint csom

我尝试首先在当前Web级别按ID定位内容类型,如果找不到,则从根Web进行检查。但是在当前的网站上,如果找不到,我不知道检查内容类型是否正确的方法。一种可行的方法是以下方法,但它会引发异常,我想避免这种方法。

如何检查是否找到返回的内容类型?

            ContentType cType =
            clientContext.Web.ContentTypes.GetById(contentType.Id);
            clientContext.Load(cType);
            clientContext.ExecuteQuery();
            try
            {
                if (cType.Id == null)
                {
                    cType = clientContext.Web.ContentTypes.GetById(contentType.Id);

                }
            }catch(Microsoft.SharePoint.Client.ServerObjectNullReferenceException nullException)
            {
                cType = clientContext.Site.RootWeb.ContentTypes.GetById(contentType.Id);
            }

1 个答案:

答案 0 :(得分:1)

每个内容类型都有名称和ID,这对于内容类型来说是必需的,请检查内容类型是否在当前网络中存在,像这样:

       static void Main(string[] args)
        {
            ClientContext clientContext=new ClientContext("http://sp/");
            ContentType cType = null;
            try
            {
                    cType = clientContext.Web.ContentTypes.GetById("0x0101004B81B8917C303D47BEA5E576CB73DF88");
                    clientContext.Load(cType);
                    clientContext.ExecuteQuery();


                    if (!string.IsNullOrEmpty(cType.Name))
                    {
                        cType = clientContext.Web.ContentTypes.GetById("0x0120D520A808");

                    }
                    else
                    {
                        Console.WriteLine("Content Type not existed in current web.");
                    }
            }
            catch (Microsoft.SharePoint.Client.ServerObjectNullReferenceException nullException)
            {

            }
        }

enter image description here

cType完全无效时,它不为null: enter image description here