Como obter texto sem formatação de um campo de texto multi-linha no Lado do Cliente Modelo de Objeto?

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/96895

Pergunta

Eu estou tentando ler um texto simples a partir de um MultiLineTextField em uma Lista.Isto é como o meu código parece tão longe:

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

Na última linha, onde eu tento ler os ingredientes, eu estou lendo a partir de uma MultiLineTextField que é definido como RichText.Ela também deve ficar no formato rich text, como hiperlinks são supostos para ser adicionado lá.O problema é que a saída não contém apenas div-tags, mas também de algum estranho question marks eu nunca adicionado ao campo.Eu estou tentando resolver esse problema para um par de dias, mas agora parece que só há duas soluções possíveis.

  1. Defina o campo de RichText para texto sem formatação, o que não é uma opção no meu caso.
  2. Usar Regex para remover o div-tags.Por favor, não sugira essa opção.Principalmente porque eu não considero que este seja a solução para este problema.Além do mais, eu tentei e ele remove as marcas, mas aqueles estranho question marks estadia.

Parece que existe uma terceira opção que eu encontrei aqui.Ele também é mencionado neste pergunta e parece funcionar.Mas eu não posso obtê-lo trabalhar para mim.Esta é a forma como ele se parece:

string myString = item.FieldMultiLineText[Field_Name]

Então eu pergunto o que é item deveria estar aqui?Eu suponho que ele não é um ListItem porque no meu caso, ele não oferece uma FieldMultiLineText-propriedade.

Um curto, informativo trecho de código seria ótimo se você decidir me ajudar com esse problema.

Obrigado antecipadamente.

Foi útil?

Solução

Há um FieldMultiLineText classe CSOM que é equivalente a SPFieldMultiLineText classe de modelo de objecto de Servidor.Você pode tentar o código abaixo :

dish.FieldValuesAsText["Ingredients"];

Também tem de incluir o FieldValuesAsText propriedade na instrução de carga, como abaixo:

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

Outras dicas

Eu tinha o mesmo problema e tentei Unnie do solução acima, mas não funcionou para mim.O que eu achei no outro post é o que funcionou para mim e pensei que iria partilhá-la aqui e pode ajudar alguém.

O desenvolvedor externo tinha adicionado uma coluna para a lista como 'Única linha de texto", que não era suficiente para a necessidade.Eu mudei o tipo de coluna para 'Várias linhas de texto'mas esqueceu-se que, por padrão, o Especificar o tipo de texto para permitir: propriedade tinha " Rico de texto (Negrito, itálico, alinhamento de texto, hiperlinks)' selecionada.Isso fez com que o sistema de adicionar um elemento não desejado com um estranho 'ExternalClass##########' que estava matando toda a funcionalidade.

Alterar o botão de opção valor de lista de Rich text Texto Sem Formatação fez a diferença e não muda a minha código necessário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top