我尝试首先在当前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);
}
答案 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)
{
}
}