タイプされたスロット
3496 ワード
CshtmlComponentは、ASP . NET用の広範な機能セットを持つコンポーネントフレームワークです.NETコアMVCとRazorページプロジェクト(ブレザー用ではありません).See the GitHub repository of CshtmlComponent here .
スロット名
CStmlMComponentは既に名前付きスロットの使用をサポートしていますが、スロットの種類はどうですか?このポストは、これがどのように達成されることができるかについて示します.これは広範なチュートリアルではありませんので、既にcshtmlcomponentに慣れているはずです.
名前付きスロットをサポートするCSHTMLコンポーネントのかみそりマークアップは、次のようになります.
名前付きスロットを持つCSHTMLComponentの初期化
その後、コンポーネントを初期化することができます.
スロット定義型
型付きスロットを定義するには、
型スロットを持つCStmlMenuの初期化
型指定されたスロット定義を使用すると、例のコンポーネントは次のように初期化できます.
結論
CSHtmlComponentは、名前付きと型付きの両方のスロットをサポートします.タイプ化されたスロットは、メンテナンスとリファクタリングをかなり容易にするような多くの利点をもたらします.この機能は、まだCCTTMComponentドキュメントで説明されていませんが、将来的になります.
CshtmlComponentを試してみてください!MVCとRazorのページプロジェクトに役立つかもしれません.
スロット名
CStmlMComponentは既に名前付きスロットの使用をサポートしていますが、スロットの種類はどうですか?このポストは、これがどのように達成されることができるかについて示します.これは広範なチュートリアルではありませんので、既にcshtmlcomponentに慣れているはずです.
名前付きスロットをサポートするCSHTMLコンポーネントのかみそりマークアップは、次のようになります.
@using SampleRazorPagesApplication
@model ExampleComponent
<div class="example-component">
<h1>
@Model.Title
</h1>
<div class="example-component-action-bar">
@Html.Raw(Model.NamedSlots["ActionBar"])
</div>
<div class="example-component-child-content">
@Html.Raw(Model.ChildContent)
</div>
</div>
名前付きスロットを持つCSHTMLComponentの初期化
その後、コンポーネントを初期化することができます.
<ExampleComponent Title="Hello World">
Some HTML that gets captured in Model.ChildContent.
<CshtmlSlot Name="ActionBar">
Some HTML that gets captured in Model.NamedSlots["ActionBar"].
</CshtmlSlot>
</ExampleComponent>
スロット名を明示的に記述しなければならないことに注意してください.これは動作しますが、多少迷惑なエラーです.幸運にも、これを固定することはタイプされたスロットで全く簡単です.スロット定義型
型付きスロットを定義するには、
CshtmlComponentSlot
を継承し、コンストラクタでName
プロパティを設定するクラスを作成します.[HtmlTargetElement("ExampleComponentActionBar"]
public class ExampleComponentActionBar: CshtmlComponentSlot
{
public ExampleComponentActionBar(IHtmlHelper htmlHelper) : base(htmlHelper)
{
Name = "ActionBar";
}
}
それです.たとえば、Name
の値を保守性の良い静的フィールドとして格納したい場合がありますが、これは必要ありません.型スロットを持つCStmlMenuの初期化
型指定されたスロット定義を使用すると、例のコンポーネントは次のように初期化できます.
<ExampleComponent Title="Hello World">
Some HTML that gets captured in Model.ChildContent.
<ExampleComponentActionBar>
Some HTML that gets captured in Model.NamedSlots["ActionBar"].
</ExampleComponentActionBar>
</ExampleComponent>
名前を明示的に指定する必要がないことに注意してください.結論
CSHtmlComponentは、名前付きと型付きの両方のスロットをサポートします.タイプ化されたスロットは、メンテナンスとリファクタリングをかなり容易にするような多くの利点をもたらします.この機能は、まだCCTTMComponentドキュメントで説明されていませんが、将来的になります.
CshtmlComponentを試してみてください!MVCとRazorのページプロジェクトに役立つかもしれません.
Reference
この問題について(タイプされたスロット), 我々は、より多くの情報をここで見つけました https://dev.to/acmion/cshtmlcomponent-typed-slots-41n2テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol