سلام دوستان
یک ViewComponent دارم که میخوام اطلاعات این ViewComponent رو از طریق Model موجود در Viewی اصلی بهش ارسال کنم.
ویو به صورت زیر هست :
@model IEnumerable<CourseListForDisplayViewModel>
<div class="content">
<form>
<div class="panel panel-body">
</div>
</form>
@await Component.InvokeAsync("myViewComponent", Model)
</div>
در کنترلر هم دستورات زیر رو دارم
public IActionResult Index()
{
var model = _icourse.CourseListForDisplay();
return View(model);
}
و در کلاس مربوط به Component هم دستورات زیر رو دارم
[ViewComponent(Name = "myComponent")]
public class CourseListViewComponent : ViewComponent
{
private readonly ICourseRepository _icourse;
public CourseListViewComponent(ICourseRepository icourse)
{
_icourse = icourse;
}
public IViewComponentResult Invoke(CourseListForDisplayViewModel model)
{
return View(model);
}
}
اما بعد از اجرای پروژه با خطای زیر روبرو میشم
Unable to cast object of type 'System.Collections.Generic.List`1[porseman.Models.ViewModels.CourseListForDisplayViewModel]' to type 'porseman.Models.ViewModels.CourseListForDisplayViewModel'
لطفا راهنمایی کنید که چجوری باید این خطا رو رفع کنم.
دستوراتی که شما نوشتید تا حد زیادی درست هست اما اشکالاتی داره. اول اینکه بهتره که به Model که میخواید ارسال کنید یه اسم بدید و در کلاس مربوط به Component هم با همون نام دریافتش کنید. کدهای زیر رو دقت کنید :
@model IEnumerable<CourseListForDisplayViewModel>
<div class="content">
<form>
<div class="panel panel-body">
</div>
</form>
@await Component.InvokeAsync("myViewComponent", new {mModel = Model})
</div>
نکته بعد هم اینکه Model شما یک IEnumerable هست. بنابراین باید در کلاس مربوط به View Component هم یک IEnumerable دریافت کنید نه یک Model تنها. کدهای زیر رو دقت بفرمایید
[ViewComponent(Name = "myComponent")]
public class CourseListViewComponent : ViewComponent
{
private readonly ICourseRepository _icourse;
public CourseListViewComponent(ICourseRepository icourse)
{
_icourse = icourse;
}
public IViewComponentResult Invoke(IEnumerable<CourseListForDisplayViewModel> model)
{
return View(model);
}
}
بنظر نمیاد مشکل دیگه ای وجود داشته باشه.
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
78
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1403/07/27
- ساعت :
03:21:00 PM
- بازدید :
215
- پاسخ :
1
|
تاریخ :
1403/07/26
- ساعت :
09:00:00 PM
- بازدید :
117
- پاسخ :
0
|
تاریخ :
1403/05/16
- ساعت :
09:57:00 AM
- بازدید :
397
- پاسخ :
2
|
تاریخ :
1403/06/25
- ساعت :
11:39:00 PM
- بازدید :
568
- پاسخ :
1
|
تاریخ :
1401/02/24
- ساعت :
02:17:00 PM
- بازدید :
2013
- پاسخ :
1
|
تاریخ :
1403/08/29
- ساعت :
07:15:00 PM
- بازدید :
78
- پاسخ :
0
|
تاریخ :
1403/08/18
- ساعت :
10:40:00 AM
- بازدید :
109
- پاسخ :
0
|
تاریخ :
1402/07/23
- ساعت :
04:01:00 PM
- بازدید :
1034
- پاسخ :
1
|
تاریخ :
1403/05/30
- ساعت :
09:22:00 AM
- بازدید :
430
- پاسخ :
1
|
تاریخ :
1402/08/01
- ساعت :
06:25:00 PM
- بازدید :
931
- پاسخ :
1
|
تاریخ :
1402/08/16
- ساعت :
10:38:00 AM
- بازدید :
1356
- پاسخ :
1
|
تاریخ :
1398/08/17
- ساعت :
01:27:00 AM
- بازدید :
4800
- پاسخ :
1
|
تاریخ :
1402/09/08
- ساعت :
07:34:00 PM
- بازدید :
1161
- پاسخ :
1
|
تاریخ :
1402/09/21
- ساعت :
11:10:00 PM
- بازدید :
599
- پاسخ :
1
|