كيفية الحصول على نص عادي من حقل نص متعدد الأسطر في نموذج كائن جانب العميل؟

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

سؤال

أحاول قراءة نص عادي من 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"]);
}

في السطر الأخير حيث أحاول قراءة المكونات، أقرأ من MultiLineTextField الذي تم تعيينه على RichText.ومن المفترض أيضًا أن يبقى بتنسيق RichText، حيث من المفترض إضافة الارتباطات التشعبية هناك.تكمن المشكلة في أن الإخراج لا يحتوي فقط على علامات div، بل يحتوي أيضًا على بعض علامات الاستفهام الغريبة التي لم أقم بإضافتها إلى الحقل مطلقًا.أحاول حل هذه المشكلة لبضعة أيام الآن ولكن يبدو أن هناك حلين ممكنين فقط.

  1. قم بتعيين الحقل من RichText إلى PlainText، وهو ليس خيارًا في حالتي.
  2. استخدم Regex لإزالة علامات div.من فضلك لا تقترح هذا الخيار.ويرجع ذلك أساسًا إلى أنني لا أعتبر هذا حلاً نظيفًا لهذه المشكلة.بالإضافة إلى ذلك، لقد جربته وأزال العلامات ولكن علامات الاستفهام الغريبة هذه بقيت.

يبدو أن هناك خيارًا ثالثًا وجدته هنا.وقد ورد في هذا أيضاً سؤال ويبدو أنه يعمل.ولكن لا أستطيع الحصول عليه للعمل بالنسبة لي.هكذا تبدو:

string myString = item.FieldMultiLineText[Field_Name]

لذلك أنا أتساءل ما هو item من المفترض أن تكون هنا؟أعتقد أنه ليس أ ListItem لأنه في حالتي لا تقدم FieldMultiLineText-ملكية.

سيكون مقتطف الشفرة القصير والغني بالمعلومات أمرًا رائعًا إذا قررت مساعدتي في حل هذه المشكلة.

شكرا لك مقدما.

هل كانت مفيدة؟

المحلول

هناك FieldMultiLineText فئة في CSOM والتي تعادل فئة SPFieldMultiLineText لنموذج كائن الخادم. يمكنك تجربة الكود أدناه:

dish.FieldValuesAsText["Ingredients"];

كما يجب عليك تضمين FieldValuesAsText الخاصية في بيان التحميل كما يلي:

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

نصائح أخرى

كان لي نفس المشكلة وحاولت أوني الحل أعلاه ولكن هذا لم ينجح بالنسبة لي.ما وجدته على وظيفة أخرى هو ما نجح بالنسبة لي وأعتقد أنه سيشاركه هنا وقد يساعد شخصًا ما.

أضاف المطور الخارجي عمودًا إلى القائمة باسم "سطر نصي واحد" وهو ما لم يكن كافيًا للحاجة.لقد قمت بتغيير نوع العمود إلى "أسطر متعددة من النصولكن نسيت أنه بشكل افتراضي حدد نوع النص الذي تريد السماح به: تم تحديد الخاصية "نص منسق (غامق، مائل، محاذاة النص، ارتباطات تشعبية)".أدى هذا إلى قيام النظام بإضافة عنصر غير مرغوب فيه باستخدام "ExternalClass##########" غريب مما أدى إلى إنهاء الوظيفة بأكملها.

تغيير قيمة قائمة أزرار الاختيار من نص منسق إلى نص عادي أحدثت الفرق ولا يلزم إجراء أي تغييرات على الكود الخاص بي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى sharepoint.stackexchange
scroll top