Cshtml 구성 요소 - 유형 슬롯
3030 단어 dotnetcsharpwebdevaspnetcore
CshtmlComponent 명명된 슬롯
CshtmlComponent는 이미 명명된 슬롯의 사용을 지원하지만 유형이 지정된 슬롯은 어떻습니까? 이 게시물은 이것이 어떻게 달성될 수 있는지 보여줄 것입니다. 이것은 광범위한 자습서가 아니므로 이미 CshtmlComponent에 어느 정도 익숙해야 합니다.
명명된 슬롯을 지원하는 CshtmlComponent에 대한 Razor 마크업은 다음과 같을 수 있습니다.
@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
값을 정적 필드로 저장할 수 있지만 반드시 필요한 것은 아닙니다.유형 슬롯이 있는 Cshtml 구성 요소 초기화
입력된 슬롯 정의를 사용하여 이제 예제 구성 요소를 다음과 같이 초기화할 수 있습니다.
<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는 명명된 슬롯과 유형이 지정된 슬롯을 모두 지원합니다. 유형이 지정된 슬롯은 유지 관리 및 리팩토링이 훨씬 쉬워지는 등 많은 이점을 제공합니다. 이 기능은 아직 실제 CshtmlComponent 문서에 문서화되어 있지 않지만 앞으로 문서화될 것입니다.
시도해보세요CshtmlComponent! MVC 및 Razor Pages 프로젝트에 유용할 수 있습니다!
Reference
이 문제에 관하여(Cshtml 구성 요소 - 유형 슬롯), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/acmion/cshtmlcomponent-typed-slots-41n2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)