Question

Je suis en train de lire le texte brut à partir d'un MultiLineTextField dans une Liste.C'est ainsi que mon code ressemble à ce jour:

//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"]);
}

Dans la dernière ligne où j'essaie de lire les ingrédients, je suis de la lecture à partir d'un MultiLineTextField qui est fixé à RichText.Il est également censé rester dans le format de texte enrichi, en tant que liens hypertexte sont censés être ajouté là.Le problème est que la sortie ne contient pas seulement des div-tags, mais aussi un peu bizarre de points d'interrogation, je n'ai jamais ajouté au champ.Je suis en train d'essayer de résoudre ce problème pour un couple de jours maintenant, mais il semble qu'il n'existe que deux solutions possibles.

  1. Définir le champ de texte enrichi au texte Clair, ce qui n'est pas une option dans mon cas.
  2. Utiliser des Regex pour supprimer la div-tags.Merci de ne pas proposer cette option.Principalement parce que je ne considère pas cela comme une solution propre pour cette question.De Plus, j'ai essayé et il supprime les balises mais ces étranges marques de question de rester.

Il semble y avoir une troisième option que j'ai trouvé ici.Il est également mentionné dans cette question et il semble fonctionner.Mais je ne peux pas le faire fonctionner pour moi.C'est à quoi il ressemble:

string myString = item.FieldMultiLineText[Field_Name]

Donc je me demande qu'est-ce que item censé être ici?Je suppose que ce n'est pas un ListItem parce que dans mon cas il n'offre pas un FieldMultiLineText-propriété.

Un court, informatif extrait de code serait formidable si vous décidez de m'aider avec ce problème.

Merci à l'avance.

Était-ce utile?

La solution

Il y a un FieldMultiLineText classe dans otite chronique, qui est l'équivalent SPFieldMultiLineText classe de modèle objet Serveur.Vous pouvez essayer le code ci-dessous :

dish.FieldValuesAsText["Ingredients"];

Aussi, vous devez inclure le FieldValuesAsText propriété dans l'instruction de chargement comme ci-dessous:

context.Load(dishes,items=>items.Include(item=>item.FieldValuesAsText));

Autres conseils

J'ai eu le même problème et a essayé Unnie est la solution ci-dessus mais qui n'a pas fonctionné pour moi.Ce que j'ai trouvé sur un autre post est ce qui a fonctionné pour moi et de la pensée serait de le partager ici, et peut aider quelqu'un.

Le développeur externe avait ajouté une colonne à la liste comme "une Seule ligne de texte" qui n'était pas suffisant pour le besoin.J'ai changé le type de colonne 'Plusieurs lignes de texte'mais il a oublié que, par défaut, l' Spécifier le type de texte pour permettre: la propriété avait "texte enrichi (Gras, italique, alignement du texte, des hyperliens)" est sélectionné.Cela a provoqué le système pour ajouter un élément indésirable avec un bizarre " ExternalClass##########' qui a tué l'ensemble des fonctionnalités.

Changer le bouton radio liste valeur de texte enrichi à Texte Brut faites la différence et aucune modification de mon code.

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top