ASP.NET Core Partial View ve View Component İçerisinde Section Tanımlayabilmek

Partial View ve View Componentlerde mevcut yapıda Section kullanamamaktayız. Bu da Partial View veya View Componentlerimizde yazdığımız bazı Javascript / Jquery kodlarımızın Layout sayfasında alt kısımda çalıştırmak istediğimizde bize engel oluyor. Aşağıdaki bir taghelper yazarak bu soruna çözüm üretebilirsiniz.

</p>
<p>public class ScriptsTagHelper : TagHelper<br />
{<br />
private static readonly object Itemskey = new Object();</p>
<p>private IDictionary&lt;object, object&gt; Items =&gt; _httpContextAccessor?.HttpContext?.Items;</p>
<p>private readonly IHttpContextAccessor _httpContextAccessor;</p>
<p>public ScriptsTagHelper(IHttpContextAccessor httpContextAccessor)<br />
{<br />
_httpContextAccessor = httpContextAccessor;<br />
}</p>
<p>public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)<br />
{<br />
context.AllAttributes.TryGetAttribute(&quot;render&quot;, out var attribute);</p>
<p>var render = false;</p>
<p>if (attribute != null)<br />
{<br />
render = Convert.ToBoolean(attribute.Value.ToString());<br />
}</p>
<p>if (render &amp;&amp; Items.ContainsKey(Itemskey))<br />
{<br />
var scripts = (List&lt;HtmlString&gt;)Items[Itemskey];<br />
var outputContent = String.Concat(scripts);<br />
output.Content.SetHtmlContent(outputContent);<br />
}<br />
else<br />
{<br />
List&lt;HtmlString&gt; list;</p>
<p>if (!Items.ContainsKey(Itemskey))<br />
{<br />
list = new List&lt;HtmlString&gt;();<br />
Items[Itemskey] = list;<br />
}</p>
<p>list = (List&lt;HtmlString&gt;)Items[Itemskey];</p>
<p>var outputContent = await output.GetChildContentAsync();<br />
list.Add(new HtmlString(outputContent.GetContent()));<br />
output.Content.Clear();<br />
}<br />
}<br />
}</p>
<p>

 

Scripts adlı bir tag helper oluşturduğumuzdan sayfa içerisinde tag helperımızı “<scripts>” olarak kullanacağız.

Aşağıdaki kodu javascript kodlarınızın layout sayfanızın neresinde çalışmasını istiyorsanız oraya yerleştirebilirsiniz.

<br />
&lt;scripts render=&quot;true&quot;&gt;&lt;/scripts&gt;<br />

Partial View ve View Component View leriniz içerisinde aşağıdaki kodlarınızı aşağıdaki gibi kullanabilirsiniz.

<br />
&lt;scripts&gt;<br />
    &lt;script&gt;<br />
        // javascript, jquery kodlarınızı buraya yazabilirsiniz.<br />
    &lt;/script&gt;<br />
&lt;/scripts&gt;<br />

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir