@tagHelperPrefix
サポートを追加しますBlazor v0.6.0の現在の実装では、Razor @tagHelperPrefix
はサポートされていません。
子とRenderFragmentの両方が同じ名前である親コンポーネントのRenderFragment内に子コンポーネントを
次のように、 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; }
}
次に、以下のコードのようなページでこれら2つのコンポーネントを使用すると、コンパイル時エラーが発生します。
<Panel>
<PanelHeader>
<PanelHeader Title="some title" SubTitle="sub title"></PanelHeader>
</PanelHeader>
<PanelBody>Some content ...</PanelBody>
<Panel>
コンポーネントとRenderFragmentsを簡単に区別できるように、 @tagHelperPrefix
サポートを追加することをお勧めします。
上記のコードは、次のように書き直すことができます。
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>
この提案をありがとう!
コンポーネントとパラメーターが.NETのタイプとプロパティと同じ名前解決ルールに従うことを目的としているため、 @tagHelperPrefix
サポートを追加する予定はありません。 たとえば、コンポーネント名を名前空間で修飾する必要がある場合は、タイプ名に加えて名前空間を指定するだけです: <Namespace.MyComponent />
。 これはまだ実装されていませんが、 https://github.com/aspnet/Blazor/issues/1315によって追跡されてい
そうは言っても、あなたのシナリオは今日そのままで機能するはずであり、そうでないという事実はバグだと思います。 これは、同じ名前のプロパティとタイプを持つことと同じですが、これで問題ありません。
ああ、それは素晴らしいことですが、同時に、すべての名前空間を入力するのに非常に時間がかかります。 おそらく、実装すると、C#でusing
ステートメントのようなものを提供する機能を追加できます。
@fayezmmうん、良いニュースは、Razorがすでに@using
ディレクティブを持っていることです。