كيف يمكنك إنشاء عنصر تحكم مخصص ASP.NET باستخدام خاصية مجموعة؟

StackOverflow https://stackoverflow.com/questions/123616

  •  02-07-2019
  •  | 
  •  

سؤال

أنا أتطلع إلى القيام بشيء مشابه لـ

<cstm:MyControl runat="server">
    <myItem attr="something" />
    <myItem attr="something" />
</cstm:MyControl>

ما هو الكود الأساسي المطلوب لإنجاز هذا؟

يُظهر مثال ريك شيئًا مشابهًا لـ

<cstm:MyControl runat="server">
    <myItems>
        <cstm:myItem attr="something" />
        <cstm:myItem attr="something" />
    </myItems>
</cstm:MyControl>

أفضّل بناء الجملة الأكثر إيجازًا إن أمكن.

ملحوظة:لا تتردد في اقتراح عنوان أو وصف أفضل.حتى لو لم تكن لديك حقوق التعديل، يسعدني تعديل الإدخال من أجل المجتمع.

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

المحلول

فيما يلي مثال بسيط لعنصر التحكم الذي يفعل بالضبط ما تبحث عنه:

namespace TestControl
{
    [ParseChildren(true, DefaultProperty = "Names")]
    public class MyControl : Control
    {
        public MyControl()
        {
            this.Names = new List<PersonName>();
        }

        [PersistenceMode(PersistenceMode.InnerDefaultProperty)]
        public List<PersonName> Names { get; set; }
    }

    public class PersonName
    {
        public string Name { get; set; }
    }
}

وهنا مثال للاستخدام:

<%@ Register Namespace="TestControl" TagPrefix="TestControl"  %>

<TestControl:MyControl runat="server" ID="MyControl1">
    <TestControl:PersonName Name="Chris"></TestControl:PersonName>
    <TestControl:PersonName Name="John"></TestControl:PersonName>
</TestControl:MyControl>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top