6e2a

ViewComponent در ASP.NET Core

لینک کوتاه https://codecell.ir/a/6e2a
به اشتراک گذاری
نویسنده:
0
0
2
آموزش های نویسنده:
ViewComponent در ASP.NET Core

ViewComponent در ASP.NET Core

در ASP.NET Core، ایجاد اجزای ماژولار و قابل استفاده مجدد برای ساخت برنامه های کاربردی وب قابل نگهداری و مقیاس پذیر بسیار مهم است. ViewComponent یکی از ویژگی‌هایی است که سازماندهی کد را بهبود می‌بخشد و قابلیت استفاده مجدد کد را با کپسوله کردن منطق رندر یک نمای جزئی ارتقا می‌دهد. در این مقاله به بررسی جزئیات ViewComponent، مزایای آن و نحوه پیاده سازی آن در پروژه های ASP.NET Core می پردازیم.

 ViewComponent چیست؟

ViewComponent یک ویژگی معرفی شده در ASP.NET Core 1.1 است که به توسعه دهندگان اجازه می دهد تا اجزای قابل استفاده مجدد را برای رندر کردن نماهای جزئی به روشی سازمان یافته و کارآمدتر ایجاد کنند. برخلاف Partial View ها، Razor View یا Razor Page، ViewComponent رویکرد ساختارمندتر و مستقل تری برای رندر کردن اجزا در یک view دارد. این به عنوان یک گروه بندی منطقی از منطق view عمل می کند و می تواند به " mini controller ها" تشبیه شود که می تواند داده ها را بازیابی کند و partial view ها را بر اساس آن داده ها ارائه دهد.

مزایای ViewComponent در Asp.net Core

1. بهبود سازماندهی کد

ViewComponent با اجازه دادن به توسعه دهندگان برای گروه بندی منطق رندر مرتبط با هم در کلاس های جداگانه، سازماندهی بهتر کد را ارتقا می دهد. این جداسازی ها منجر به کد تمیزتر و قابل نگهداری تر می شود.

2. قابلیت استفاده مجدد کد

با ViewComponent، توسعه‌دهندگان می‌توانند مؤلفه‌های مستقلی ایجاد کنند که می‌توانند در view های مختلف و حتی در بخش‌های مختلف برنامه مورد استفاده مجدد قرار گیرند. مفهوم "یک بار بنویس، چندین بار استفاده کن" توسعه دهندگان را به استفاده از ViewComponent ها تشویق می کند.

3. رندر مستقل

برخلاف partial view ها که به view model های والد متکی هستند، ViewComponent ها می‌تواند منابع داده خود را داشته باشد و به طور مستقل رندر را مدیریت کند. این ویژگی در هنگام طراحی عناصر پیچیده رابط کاربری انعطاف پذیری بیشتری را فراهم می کند.

4. تست پذیری

ViewComponent ها را می توان به راحتی تست واحد کرد و اطمینان حاصل کرد که خروجی مورد انتظار را بدون نیاز به تست های یکپارچه سازی پیچیده تولید می کنند.

نحوه ایجاد ViewComponent  درAsp.net Core

1. ساختار کلاس ViewComponent

ViewComponent در ASP.NET Core کلاسی است که از کلاس پایه ViewComponent مشتق شده است. درقرارداد نامگذاری، یک کلاس ViewComponent باید با کلمه "ViewComponent" ختم شود. برای مثال، اگر در حال ایجاد یک ViewComponent برای نمایش آب و هوای یک شهر هستید، کلاس می تواند WeatherWidgetViewComponent نام گذاری شود.

استفاده از این قرارداد نامگذاری اجباری نیست. اگر یک کلاس ViewComponent از کلاس پایه ViewComponent مشتق شود کفایت می کند.

public class WeatherWidget: ViewComponent 
{

}
public class WeatherWidgetViewComponent 
{

}

2. پیاده سازی منطق ViewComponent

در کلاس ViewComponent، توسعه‌دهندگان منطق لازم را برای بازیابی داده‌ها پیاده‌سازی می‌کنند و view model را برای ارائه partial view آماده می‌کنند.

هنگام پیاده سازی منطق  ViewComponentنکات زیر را در نظر داشته باشید:

می‌توانید منطق خود را در متد Invoke همزمان تعریف کنید که IViewComponentResult را برمی‌گرداند، یا می‌توانید منطق خود را در متد InvokeAsync  تعریف کنید که Task را برمی‌گرداند. نمونه این روش را در عمل در ادامه این آموزش خواهیم دید.

using Microsoft.AspNetCore.Mvc;

namespace ViewComponentsDemoApp.Views.Shared.Components.WeatherWidget
{
    public class WeatherWidgetViewComponent : ViewComponent
    {
        public IViewComponentResult Invoke(string cityName)
        {
            return View(model: cityName);
        }
    }
}

بیشتر اوقات، شما مدل خود را در متدهای Invoke یا InvokeAsync مقداردهی اولیه می کنید و با فراخوانی متد View مدل را به view ارسال می کنید.

در متدهای Invoke یا InvokeAsync، هیچ اتصال مدل وجود ندارد و شما درخواست HTTP را مدیریت نمی‌کنید. شما باید از پارامترهای ارسال شده به متد به جای هر گونه داده موجود در زمینه HTTP استفاده کنید.

همچنین در منطق ViewComponent  می توانید از تزریق وابستگی استفاده کنید.

3. ایجاد view مروبط به ViewComponent

قبل از ایجاد فایل view مرتبط با ViewComponent، باید توجه داست که در زمان اجرا فریمورک view مربوطه را در مسیرهای زیر جستجو می کند:

/Views/{Controller Name}/Components/{View Component Name}/{View Name}

/Views/Shared/Components/{View Component Name}/{View Name}

/Pages/Shared/Components/{View Component Name}/{View Name}

به طور مثال می توانید یک پوشه Components در پوشه Shared ایجاد کنید و در داخل پوشه Components یک پوشه به نام ProductList ایجاد کنید. این پوشه شامل کلاس و فایل view کامپوننت سفارشی ما خواهد بود.

ViewComponent در Asp.net Core

در تصویر زیر می توانید پیاده سازی فایل view را ببینید:

ViewComponent در Asp.net core

نحوه فراخوانی ViewComponent در Asp.net Core

در Asp.net Core می توانیم ViewComponent ها را در razor view یا layout ها فراخوانی کنیم. برای استفاده از ViewComponent، باید متد InvokeAsync از کلاس Component را در داخل یک view فراخوانی کنیم و همچنین می‌توانیم پارامترهایی را مانند مثال زیر ارسال کنیم.

  @await Component.InvokeAsync("WeatherWidget", new {cityName="Shiraz"})

همچنین می توان یک ViewComponent را نیز از طریق tag helper فراخوانی کنید. سینتکس فراخوانی ViewComponnet از طریق  tag helper در زیر آمده است:

<vc:[view-component-name]
  parameter1="parameter1 value"
  parameter2="parameter2 value">
</vc:[view-component-name]>

بنابراین اگر بخواهیم کامپوننت WeatherWidget خود را فراخوانی کنیم، می توانیم از کد زیر استفاده کنیم:

<vc:weather-widget city-name="Shiraz"></vc:weather-widget>

لطفاً توجه داشته باشید که برای استفاده از یک ViewComponent از طریق Tag Helper، باید اسمبلی حاوی ViewComponent را با استفاده از دستور العمل @addTagHelper در فایل _ViewImports.cshtml ثبت کنید. برای مثال، خط زیر را در فایل _ViewImports.cshtml اضافه کرده ایم:

@addTagHelper *, ViewComponentsDemoApp

 در تصویر زیر می توانید نحوه فراخوانی ViewComponent در Asp.net core را ببینید:

فراخوانی ViewComponent در Asp.net core

همچنین در تصویر زیر می توانید خروجی و نتیجه رندر ViewComponent در Asp.net Core را ببینید:

رندر ViewComponent در Asp.net core

نتیجه گیری

ViewComponent یک ویژگی قدرتمند در ASP.NET Core است که سازماندهی کد را تسهیل می کند، قابلیت استفاده مجدد کد را ارتقا می دهد و ماژولار بودن برنامه های وب را افزایش می دهد. با ایجاد اجزای مستقل، توسعه دهندگان می توانند راه حل های قابل نگهداری و مقیاس پذیرتری بسازند. در طول این مقاله، مزایای ViewComponent و نحوه پیاده سازی آن را بررسی کرده ایم. استفاده از ViewComponent در پروژه های ASP.NET Core شما بدون شک به برنامه های کاربردی وب قابل نگهداری و کارآمدتری منجر می شود.

دیگر مقالات آموزش برنامه نویسی مدرس

Response Caching در ASP.NET Core

Response Caching یک مکانیزم ذخیره سازی پاسخ سرور توسط مرورگر یا سایر کلاینت ها است. با استفاده از Response Caching در Asp.net Core می توانیم عملکرد و کارایی سیستم را بالا ببریم.

670 0 1402/10/22

Output Caching در ASP.NET Core 8.0

Output Caching یک ویژگی جدید است که از زمان .NET 7 معرفی شده است. این ویژگی به ما این امکان را می دهد که به راحتی یک کش پاسخ برای Web API خود بدون پیاده سازی IMemoryCache راه اندازی کنیم.

723 0 1402/10/14

الگوی طراحی زنجیره مسئولیت در سی شارپ

الگوی زنجیره مسئولیت یا Chain of Responsibility Design Pattern یک الگوی طراحی رفتاری(behavioral design pattern) است که اجازه می‌دهد یک درخواست در امتداد زنجیره‌ای از کنترل‌کننده‌های بالقوه ارسال شود تا زمانی که درخواست مناسب برای پردازش آن را پیدا کند.

686 2 1402/10/01

تطبیق الگو در NET 7: ساده سازی تجزیه و تحلیل داده ها

تطبیق الگو یا Pattern Matching در net7 یک تکنیک قدرتمند برای تجزیه و تحلیل و دستکاری داده ها بر اساس ساختار آن ها است. تطبیق الگو یا Pattern Matching به توسعه دهندگان اجازه می دهد تا مقادیر را با یک الگوی خاص مطابقت دهند و اقدامات مربوطه را انجام دهند.

881 1 1402/04/05

ضروری ترین کتابخانه های NuGet برای ASP.NET Core

در این مقاله مهمترین،ضروری ترین و پرکاربردترین کتابخانه های NuGet که هر توسعه‌ دهنده‌ ASP.NET Core باید برای توسعه بهتر و کاهش زمان مورد نیاز برای برنامه ‌های خود از آن استفاده کنند را مورد بررسی قرار داده ایم.

1٬518 1 1401/12/29

الگوی طراحی Factory در سی شارپ

الگوهای طراحی یکی از مهمترین جنبه های طراحی و معماری نرم افزار است. Factory Method یک الگوی طراحی ایجادی است که یک رابط برای ایجاد اشیاء در یک سوپر کلاس فراهم می‌کند. ما در این مقاله الگوی Factory Method Design در سی شارپ را بررسی می کنیم.

1٬643 1 1401/10/28

مقایسه List و Array در سی شارپ

آرایه و لیست در سی شارپ هر دو به عنوان مجموعه ای از مقادیر عمل می کنند، اما در نحوه ذخیره محتوای خود در حافظه و نحوه دسترسی به آنها متفاوت هستند. در این مقاله Benchmark و کارایی List<T> با سایز داینامیک، List<T> با سایز ثابت و Array ها را بررسی می کنیم.

2٬222 2 1401/09/01

LinkedList در سی شارپ

LinkedList یا لیست پیوندی در سی شارپ یک ساختار داده خطی است که عنصر را در مکان غیر پیوسته ذخیره می کند. LinkedList شامل گره هایی است که هر گره حاوی یک فیلد داده و یک مرجع (پیوند) به گره بعدی در لیست است. در سی شارپ، LinkedList یا لیست پیوندی یک نوع مجموعه جنریک است.

2٬047 0 1401/08/13

Garbage Collection در دات نت

به طور کلی، Garbage Collection (GC) یا جمع آوری زباله در .Net چیزی نیست جز به دست آوردن مجدد حافظه اختصاص داده شده به اشیایی که در حال حاضر در هیچ بخشی از برنامه ما استفاده نمی شوند. ما در این مقاله Garbage Collection را در سی شارپ بررسی خواهیم کرد.

2٬840 5 1401/03/30

.NET Core چیست؟

.Net (با تلفظ «دات نت») یک چارچوب نرم افزاری کامپیوتری مدیریت شده رایگان و منبع باز برای سیستم عامل های ویندوز، لینوکس و macOS است. این پروژه در درجه اول توسط کارمندان مایکروسافت از طریق دات نت توسعه یافته و تحت مجوز MIT منتشر شده است.

2٬588 2 1401/03/16

پشته(Stack) در سی شارپ

پشته یا Stack در سی شارپ یک نوع خطی از ساختار داده است که قادر به ذخیره اشیاء است. پشته یک ساختار داده LIFO یا Last-In-First-Out است، به این معنی که آخرین موردی که در پشته قرار می گیرد اولین موردی است که از پشته خارج می شود.

2٬188 0 1401/03/09

صف (Queue) در سی شارپ

صف (Queue) در سی شارپ یک نوع خطی از ساختار داده است که قادر به ذخیره اشیاء است. Queue یک ساختار داده first-in-first-out یا FIFO است که به این معنی است که اولین مورد اضافه شده به صف اولین موردی است که حذف می شود.

2٬162 0 1401/02/30

تفاوت Hashtable و Dictionary در سی شارپ

در سی شارپ از Hashtable و Dictionary می توان برای ذخیره مجموعه‌ای از داده‌ها، شبیه به List معمولی استفاده کرد. با این تفاوت که Hashtable و Dictionary عناصر را به عنوان جفت Key/Value ذخیره می کنند.در این مقاله به تفاوت های Hashtable و Dictionary پرداخته شده است.

1٬843 1 1401/02/23

Dictionary در سی شارپ

در سی شارپ از دیکشنری ها (Dictionary) می‌توان برای ذخیره مجموعه‌ای از داده‌ها، شبیه به List معمولی استفاده کرد. تفاوت اصلی این است که یک Dictionary می تواند عناصر را به عنوان جفت Key/Value ذخیره کند.Key ها باید منحصر به فرد و نمی توانند null باشند. Value ها می توانند تکراری یا null باشند.

2٬249 3 1401/02/17

Hashtable در سی شارپ

از Hashtable می‌توان برای ذخیره مجموعه‌ای از داده‌ها، شبیه به List معمولی استفاده کرد. تفاوت اصلی این است که یک Hashtable می تواند عناصر را به عنوان جفت Key/Value به عنوان جایگزینی برای استفاده از Index ذخیره کند.

1٬721 5 1401/02/14

تبدیل enum به لیست انتخابی در asp.net core

در این آموزش ما بوسیله Reflection ها در سی شارپ و asp.net core یک enum را به لیست انتخابی یا SelectListItem تبدیل خواهیم کرد و بوسیله تگ select در بوت استرپ 5 نمایش می دهیم.

1٬753 3 1401/02/03

نحوه ارسال ایمیل در asp و c#

امروزه ارسال ایمیل به امری ضروری در پروژه های وب تبدیل شده است.از ارسال ایمیل در asp می توان در بخش های تایید حساب کاربری،بازیابی رمز عبور،ایمیل مارکتینگ،ارسال خبرنامه و ... استفاده نمود.در این آموزش نحوه ارسال ایمیل در asp core و سی شارپ پیاده سازی گردیده است.

2٬582 5 1401/02/03
نظرات

برای ثبت نظر باید در سایت ثبت نام یا ورود نمایید