我试图从列表中的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标签,还包含我从未添加到字段中的一些奇怪的问号。我现在正在尝试解决这个问题几天,但似乎只有两种可能的解决方案。

  1. 将字段从RichText设置为明文,这在我的情况下不是一个选项。
  2. 使用正则表达式删除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));

其他提示

我有同样的问题,并尝试 Unnie的 上面的解决方案,但这对我不起作用。我在上面找到了什么? 另一个职位 是什么对我有用,并认为会在这里分享它,并可能帮助别人。

外部开发人员在列表中添加了一列作为"单行文本",这不足以满足需要。我将列类型更改为'多行文本"但忘了,默认情况下 指定要允许的文本类型: 属性选择了"富文本(粗体,斜体,文本对齐,超链接)"。这导致系统添加一个不需要的元素与一个奇怪的'ExternalClass##########' 这会破坏整个功能。

将单选按钮列表值从富文本更改为 纯文本 做了不同的,不需要更改我的代码。

许可以下: CC-BY-SA归因
scroll top