می خواستم بدونم ViewComponent چیست ؟ و چه زمانی از ViewComponent استفاده کنیم؟ اگر ممکنه یک مثال هم در این مورد بنویسید.
یکی از قابلیتهای بسیار کاربردی در طراحی سایت در Asp.net Core قابلیت ViewComponent ها هستند. اگر به ظاهر برخی از سایتها نگاه کنید متوجه می شوید که از بخش های مختلفی تشکیل شده اند. مثلا قسمت آخرین اخبار، جدیدترین کالاها، آخرین بازدیدکنندگان و ... خب به زبان خیلی ساده می توان گفت هر کدام از این بخش ها را میتوان یک ViewComponent در نظر گرفت.
در واقع میتوان گفت ViewComponent ها میتوانند بخش های مختلف یک View را ایجاد کنند. ViewComponent ها تا حدود زیادی مشابه با Partial View ها هستند اما توانایی های بیشتری را دارند. دلیل اینکه ViewComponent ها توانایی بیشتری نسبت به پارشیال ویوها دارند این است که ViewComponent ها دارای یک کنترلر مخصوص خود نیز هستند که پارشیال ویوها این مورد را ندارند.
خب همانطوری که گفته شد از ViewComponent ها میتوان در ایجاد بخش های مختلف یک View استفاده کرد. اجازه بدهید یک مثال ملموس تر برای شما ذکر کنم.
فرض کنید در یک ویو می خواهید مشخصات کالای خود را نمایش دهید. خب اطلاعات این View از جدول کالاها یا Product باید نمایش داده شود. اما در سمت راست این ویو می خواهید کالاهای مشابه این کالا را نمایش دهید. در اینجا باید از 2 جدول Product و جدول گروه کالاها مثلا ProductGroup استفاده کرد.
همچنین در سمت راست و پایین قصد دارید لیست فروشندگان این کالا را هم نمایش دهید. بنابراین باید از جدول تامین کنندگان یا Supplier هم اطلاعاتی را نمایش دهید. خب فرض کنید چندین بخش دیگر هم می خواهید نمایش دهید.
همانطور که ملاحظه میکنید در یک ویو از چندین و چند جدول و Model استفاده می شود. خب طراحی این ویو و کدنویسی سمت کنترلر این ویو سخت و با اشتباهات زیادی همراه خواهد شد. در این مواقع میتوان هر بخش را یک ViewComponent تعریف کرد و کدنویسی سمت سرور هر بخش را نیز در کنترلر مربوط به آن انجام داد. در این صورت کدنویسی شما بسیار ساده تر و دسته بندی بسیار بهتری خواهید داشت.
خب اما ببینیم چجوری میتونیم از یک ViewComponent در Asp.net Core استفاده کنیم. برای این منظور مراحل زیر را به ترتیب انجام دهید.
[ViewComponent(Name = "LoginVM")]
public class LoginViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
return View();
}
}
خب همونطوری که ملاحظه میفرمایید این کلاس از کلاس ViewComponent ارث بری میکنه و یک اکشن به نام Invoke داره که یک IViewComponentResult هست. شما هم دقیقا همینارو بنویسید.
حالا میتونید این View که نامش Default هست رو دقیقا مثل یک Viewی معمولی کدنویسی کنید و توسط کدهای Html و Css بخش Login رو طراحی کنید. حتی میتونید ViewModel ایجاد کنید و به عنوان model به این ویو ارسال کنید.
@await Component.InvokeAsync("LoginVM")
استفاده از ViewComponent ها مزایای زیادی داره. همچنین قابلیتهای فراوانی هم دارن که میتونید توی این لینک در موردش بیشتر مطالعه کنید.
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
53
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
92
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1347
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
116
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
394
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
561
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
53
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
92
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1031
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
426
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
930
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1347
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4796
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1157
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
595
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
205
- پاسخ :
1
|