如何从客户端对象模型中的多行文本字段中获取纯文本?
-
10-12-2019 - |
题
我试图从列表中的MultiLineTextField读取纯文本。这就是我的代码到目前为止的样子:
//Get connection
ClientContext context = new ClientContext("URL");
Web site = context.Web;
context.Load(site);
context.ExecuteQuery();
//Get list collection
ListCollection lists = context.Web.Lists;
context.Load(lists);
context.ExecuteQuery();
//Get specific list
List menu = lists.GetByTitle("menu");
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXML = "<View/>";
ListItemCollection dishes = menu.GetItems(camlQuery);
context.Load(menu);
context.Load(dishes);
context.ExecuteQuery();
//Iterate through all dishes
foreach(ListItem dish in dishes)
{
Console.WriteLine("Dish: {0}:", dish.FieldValues["Name"]);
Console.WriteLine("Price: {0}:", dish.FieldValues["Price"]);
//Here I get my problem
Console.WriteLine("Ingredients: {0}:", dish.FieldValues["Ingredients"]);
}
在我尝试阅读成分的最后一行中,我正在从设置为RichText的MultiLineTextField中读取。它也应该保持RichText格式,因为超链接应该被添加到那里。问题是输出不仅包含div标签,还包含我从未添加到字段中的一些奇怪的问号。我现在正在尝试解决这个问题几天,但似乎只有两种可能的解决方案。
- 将字段从RichText设置为明文,这在我的情况下不是一个选项。
- 使用正则表达式删除div标签。请不要建议此选项。主要是因为我不认为这是这个问题的干净解决方案。另外,我尝试了它,它删除了标签,但那些奇怪的问号仍然存在。
我发现似乎还有第三个选择 这里.在此也提到 问题 它似乎工作。但我不能让它为我工作。这就是它的样子:
string myString = item.FieldMultiLineText[Field_Name]
所以我想知道什么是 item
应该在这里?我想这不是一个 ListItem
因为在我的情况下,它不提供一个 FieldMultiLineText
-财产。
如果你决定帮助我解决这个问题,一个简短的,信息丰富的代码片段将是巨大的。
先谢谢你。
解决方案
有一个 [医]字段 CSOM中的类,相当于服务器对象模型的SPFieldMultiLineText类。你可以试试下面的代码 :
dish.FieldValuesAsText["Ingredients"];
你还必须包括 字段值,字段值 load语句中的属性如下所示:
context.Load(dishes,items=>items.Include(item=>item.FieldValuesAsText));