@tagHelperPrefix
لا يدعم التطبيق الحالي لـ Blazor v0.6.0 لـ Razor @tagHelperPrefix
محاولة تضمين مكون فرعي داخل جزء الفرعي و
لنفترض أن لدينا مكونًا في Panel.cshtml
النحو التالي:
<div class="panel panel-default">
<div class="panel-heading">@PanelHeader</div>
<div class="panel-body">@PanelBody</div>
</div>
@functions{
[Parameter] private RenderFragment PanelHeader { get; set; }
[Parameter] private RenderFragment PanelBody { get; set; }
}
ومكون آخر في PanelHeader.cshtml
مثل هذا:
<div>@Title</div>
<div>@SubTitle</div>
@functions{
[Parameter] private string Title { get; set; }
[Parameter] private string SubTitle { get; set; }
}
ثم استخدام هذين المكونين في صفحة مثل الكود أدناه سيؤدي إلى خطأ وقت الترجمة:
<Panel>
<PanelHeader>
<PanelHeader Title="some title" SubTitle="sub title"></PanelHeader>
</PanelHeader>
<PanelBody>Some content ...</PanelBody>
<Panel>
أوصي بإضافة دعم لـ @tagHelperPrefix
لتبسيط تمييز المكونات عن RenderFragments.
يمكن بعد ذلك إعادة كتابة الكود أعلاه على النحو التالي:
Panel.cshtml
هكذا:
<strong i="32">@tagHelperPrefix</strong> "pre1:"
<div class="panel panel-default">
<div class="panel-heading">@PanelHeader</div>
<div class="panel-body">@PanelBody</div>
</div>
@functions{
[Parameter] private RenderFragment PanelHeader { get; set; }
[Parameter] private RenderFragment PanelBody { get; set; }
}
وسيبدو PanelHeader.cshtml
هكذا:
<strong i="37">@tagHelperPrefix</strong> "pre2:"
<div>@Title</div>
<div>@SubTitle</div>
@functions{
[Parameter] private string Title { get; set; }
[Parameter] private string SubTitle { get; set; }
}
وأخيرًا ، يمكن استخدام كل من المكونين الطفل والوالد على النحو التالي:
<pre1:Panel>
<PanelHeader>
<pre2:PanelHeader Title="some title" SubTitle="sub title"></pre2:PanelHeader>
</PanelHeader>
<PanelBody>Some content ...</PanelBody>
<pre1:Panel>
شكرا على هذا الاقتراح!
لا نخطط لإضافة دعم لـ @tagHelperPrefix
لأن القصد من المكونات والمعلمات أن تتبع نفس قواعد دقة الاسم مثل أنواع وخصائص .NET. على سبيل المثال ، إذا كنت تريد أن تؤهل مساحة الاسم لاسم مكون ، يمكنك ببساطة تحديد مساحة الاسم بالإضافة إلى اسم النوع: <Namespace.MyComponent />
. لم يتم تنفيذ هذا بعد ، ولكن يتم تتبعه بواسطة https://github.com/aspnet/Blazor/issues/1315.
ومع ذلك ، يجب أن يعمل السيناريو الخاص بك اليوم كما هو ، وحقيقة أنه لا أعتقد أنه خطأ. إنه مكافئ لامتلاك خاصية وكتابة بنفس الاسم ، وهو أمر يجب أن يكون جيدًا.
سيكون هذا رائعًا ولكن في نفس الوقت سيكون وقتًا طويلاً جدًا للكتابة في جميع مساحات الأسماء. ربما ، عند التنفيذ ، يمكنك إضافة ميزة لتقديم شيء مثل using
كشف في C #
fayezmm Yup ، الخبر السار هو أن Razor لديها بالفعل توجيه @using
لذلك.