سؤال

أقوم بتطوير تطبيق ويب ASP.NET في العمل، وأظل تشغيله في نفس المشكلة:

أحيانا أريد أن أكتب HTML إلى الصفحة من الرمز "وراء". على سبيل المثال، لدي صفحة، Editor.aspx، مع الإخراج الذي يختلف اعتمادا على قيمة متغير الحصول على متغير "عرض". بمعنى آخر، "Editor.aspx؟ عرض = فتحات" إخراج HTML مختلفة من "Editor.aspx؟ عرض = البرتقال".

أخرج حاليا هذا HTML مع StringBuilder. على سبيل المثال، إذا أردت إنشاء قائمة، فقد أستخدم بناء الجملة التالي:

myStringBuilder.AppendLine("<ul id=\"editor-menu\">");
myStringBuilder.AppendLine("<li>List Item 1</li>");
myStringBuilder.AppendLine("</ul>");

المشكلة هي أنني أفضل استخدام عنصر التحكم في قائمة ASP.NET لهذا الغرض، لأن عدة أسطر من بناء جملة Stringbuilder تعيق قابلية القراءة الخاصة بي. ومع ذلك، فإن عناصر التحكم ASP.NET تميل إلى إخراج HTML Colluted، مع معرف فريد من نوعه، وأنماط مضمنة، والكتلة العرضية من جافا سكريبت مضمنة.

سؤالي هو، هل هناك عنصر تحكم ASP.NET الذي يمثل مجرد علامة HTML عامة؟ بمعنى آخر، هل هناك عنصر تحكم مثل المثال التالي:

HTMLTagControl list = new HTMLTagControl("ul");
list.ID = "editor-menu";
HTMLTagControl listItem = new HTMLTagControl("li");
listItem.Text = "List Item 1";
list.AppendChild(listItem);

أعلم أن هناك مغلفة ومثل، ولكن بدلا من ترويض تعقيد ASP.NET، أفضل أن أبدأ بساطة من الحصول على الذهاب.

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

المحلول

هل هناك عنصر تحكم ASP.NET الذي يمثل مجرد علامة HTML عامة؟

نعم، يطلق عليه htmlgenericcontrol. :)

بقدر ما تريد بالضبط، ولكن يمكنك الحصول عليها بسهولة:

HtmlGenericControl list = new HtmlGenericControl("ul");
list.ID = "editor-menu";
HtmlGenericControl listItem = new HtmlGenericControl("li");
listItem.InnerText = "List Item 1";
list.Controls.Add(listItem);

إذا كنت بحاجة حقا إلى النزول إلى المعادن العارية، فعليك استخدام htmltextwriter. فئة بدلا من StringBuilder كما هو أكثر مخصصة مصممة خصيصا لضخ HTML الخام.

نصائح أخرى

إذا كنت ترغب في تعيين نتائج StringBuilder الخاص بك إلى عنصر تحكم فارغ، يمكنك استخدام <asp:Literal /> السيطرة لهذا.

يحتوي LiteralControl على تقارب يمكنك تمرير HTML ... أعتقد أنه أفضل.

LiteralControl الجديد (SB.Toststring ())؛

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