سؤال

كان هناك الكثير من المناقشات حول عرض المحركات بالنسبة لـ ASP.NET MVC وبعض الانتقادات ضد "مجموعة العلامات" المضمّنة مع الحلقات والشيء مثله.

كان البديل أو المكمل هو استخدام HTML-Helpers ، والتي هي مجرد أساليب طريقة مضمّنة.

عندما أنظر داخل ASP.NET MVC's HTML-Helpers اليوم ، يستخدمون فصلًا يسمى Tagbuilder.

اقتراحي هو استخدم LINQ إلى XML للحصول على الكتابة بقوة وتنسيق بشكل صحيح (X) HTML:

XDocument output = new XDocument();
XElement root = new XElement("div",
    new XAttribute("class", "root_item"));

XElement iconImage = new XElement("img",
    new XAttribute("src", ResolveUrl("~/image.gif")),
    new XAttribute("alt", "This is an image"));

XElement link = new XElement("a",
    new XAttribute("class", "link"),
    new XAttribute("href", "http://google.com"),
    new XText("Link to Google"));


root.Add(link);
root.Add(iconImage);
output.Add(root);

يعجبني ذلك لأنه يشبه عناصر التحكم التي كتبها بقوة في WebForms ، حيث يمكنك إجراء جديد على زر وإضافته إلى جمع تحكم آخر.

هل هناك أي مشاكل أو قيود واضحة في هذا؟

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

المحلول

أستطيع أن أفكر في مشكلتين في الطريقة المذكورة أعلاه. أولاً،

XElement iconImage = new XElement("img",
new XAttribute("src", ResolveUrl("~/image.gif")),
new XAttribute("alt", "This is an image"));

بالإشارة إلى ما تكتبه أعلاه ، يمكننا الحصول على شيء مثل:

<img src=<%=whatever%> alt=<%=whatever%> />

قد يكون هذا حكمًا شخصيًا أو ماذا ، لكنني بالتأكيد أصوت في وقت لاحق آخر "إنساني" يمكن قراءته. إلى اليمين ، قد يتخلص LINQ 2 XML من الغريب <٪} ٪> الذي يتجول في صفحات ASPX الخاصة بي ، ولكن في الوقت نفسه ، تجعل هؤلاء "الأولاد الطيبين" يبدو أخرق.

قد يأتي الثاني مع مشكلة الأداء. أعتقد أن تحليل وتنفيذ LINQ 2 XML قد يكون بطيئًا للغاية ، على الرغم من أنه ليس لدي أي بيانات بخصوص هذا.

أنا شخصياً ما زلت أجرب إطار عمل MVC ، يبدو الأمر وكأنه العودة إلى الأيام الخوالي مثل ASP أو PHP 3.x ، نظرًا لأن جميع الأجزاء التفاعلية تقريبًا يتم التعامل معها بشكل صريح ، بدلاً من الإطار الصافي النافذة النافذة/Gui-op. أعتقد أن السبب الرئيسي في استخدام MVC هو أنه يمكن أن يضمن أفضل رموز HTML من جانب العميل ..

نصائح أخرى

هذا هو فكرة عظيمة! المشكلة الوحيدة التي أراها هي استخدام C#. ؛) لدى VB.NET دعم أفضل بكثير لإنتاج XML عبر ميزة XML الحرفية.

يمكن كتابة الرمز الذي سرده في سؤالك مثل هذا في vb.net. (مع إضافة النص "هذا رابط" لأن مثالك لا يحتوي على أي نص داخل a عنصر.)

Dim root = <div class="root_item">
               <img src=<%= ResolveUrl("~/image.gif") %> alt="This is an image"/>
               <a class="link" href="http://google.com">This is a link</a>
           </div>

لا تزال هناك <%= ... %> العلامات ، ولكن يتم فحصها من أجل الصلاحية في وقت الترجمة. إذا تم إجراء هذا الرمز ، فإن قيمة الإرجاع لوظيفة تم إرجاعها من النوع XElement ، فيمكن إعادة استخدام مقتطف XHTML في مكان آخر في الموقع.

لديّ مشروع على CodePlex يستخدم VB.NET XML الحرفي كمحرك عرض ASP.NET MVC مخصص http://vbmvc.codeplex.com. يعتمد على الكود بواسطة ديمتري روبسمان, ، من هو مدير وحدة المنتج لـ ASP.NET في Microsoft. وجهات النظر هي فئات VB.NET والصفحات الرئيسية هي فصول أساسية. أنت جديد فئات العرض الجزئي بدلاً من الرجوع إليها بسلسلة اسم ، بحيث يعد أيضًا فحصًا إضافيًا للوقت. بدلاً من فئة HTMLHelper ، التي تُرجع الأوتار ، هناك فئة XHTMLHelper التي تُرجع xelement وتعمل بشكل مشابه لما اقترحته.

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