Aspnetcore: ๋งค๊ฐœ ๋ณ€์ˆ˜์™€ ํ•˜์œ„ ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ด๋ฆ„์ด ๊ฐ™์€ ๊ฒฝ์šฐ ๋นŒ๋“œ ์˜ค๋ฅ˜

์— ๋งŒ๋“  2018๋…„ 11์›” 07์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dotnet/aspnetcore

@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; }
}

๊ทธ๋Ÿฐ ๋‹ค์Œ ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์€ ํŽ˜์ด์ง€์—์„œ์ด ๋‘ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ ์‹œ๊ฐ„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

<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>
area-blazor bug

๋ชจ๋“  3 ๋Œ“๊ธ€

์ด ์ œ์•ˆ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ .NET ์œ ํ˜• ๋ฐ ์†์„ฑ๊ณผ ๋™์ผํ•œ ์ด๋ฆ„ ํ™•์ธ ๊ทœ์น™์„ ๋”ฐ๋ฅด๊ธฐ์œ„ํ•œ ๊ฒƒ์ด๋ฏ€๋กœ @tagHelperPrefix ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ ํ•  ๊ณ„ํš์ด ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ตฌ์„ฑ ์š”์†Œ ์ด๋ฆ„์„ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๋กœ ํ•œ์ •ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฆ„ ์œ ํ˜• <Namespace.MyComponent /> ์™ธ์—๋„ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๋ฅผ ์ง€์ •ํ•˜๊ธฐ ๋งŒํ•˜๋ฉด๋ฉ๋‹ˆ๋‹ค. ์•„์ง ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜์ง€๋งŒ https://github.com/aspnet/Blazor/issues/1315์—์„œ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค

์ฆ‰, ๊ท€ํ•˜์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋Š” ํ˜„์žฌ ๊ทธ๋Œ€๋กœ ์ž‘๋™ํ•ด์•ผํ•˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋Š” ์‚ฌ์‹ค์€ ๋ฒ„๊ทธ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์ด ๊ฐ™์€ ์†์„ฑ๊ณผ ์œ ํ˜•์„ ๊ฐ–๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๋ฏ€๋กœ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

์˜ค, ํ›Œ๋ฅญ ํ•  ๊ฒƒ์ด์ง€๋งŒ ๋™์‹œ์— ๋ชจ๋“  ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ๊ตฌํ˜„ ๋  ๋•Œ C #์—์„œ using ๋ฌธ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@fayezmm ๊ทธ๋ž˜, ์ข‹์€ ์†Œ์‹์€ Razor์— ์ด๋ฏธ @using ์ง€์‹œ๋ฌธ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰