دلیل خطای The model item passed into the ViewDataDictionary is of type X but this ...
با سلام
بنده زمانی که مدل رو پر می کنم به حلقه که میرسه با ارور زیر مواجه میشم
The model item passed into the ViewDataDictionary is of type 'Services.Model.RelationViewModels'
public class RelationModels
{
public ChangeEmailModel ChangeEmail { get; set; }
public SetNewPasswordModel SetNewPasswordModel { get; set; }
public User_Resumes UserResumes { get; set; }
public IEnumerable<ResumerCardViewModel> CardViewModels { get; set; }
public IEnumerable<CountriesViewModel> CountriesViewModels { get; set; }
public IEnumerable<ProvincesViewModel> ProvincesViewModels { get; set; }
public IEnumerable<CitiesViewModel> CitiesViewModels { get; set; }
}
public async Task<IActionResult> Dashboard(RelationModels model)
{
model.CardViewModels = _resumerMethod.GetCard();
return View(model);
}
اکشن dashboard هم به همین شکل هستش مدل رو پر میکنه و به سمت razor میفرسته و نمایش میده اما تو اکشن پایین با ارور مواجه میشم.
public async Task<IActionResult> Resume(Guid id, string TempName, RelationModels model)
{
var ResumeTitle = await _resumerMethod.GetUserResumeAsync(id, TempName, CancellationToken.None);
if (ResumeTitle.Count == 0) return Redirect("/");
model.CountriesViewModels = _resumerMethod.GetCountries();
return View(model);
}
تو هر دوتا view هم از
@model RelationModels
استفاده کردم.
ممنون میشم راهنمایی کنید
پاسخ هوش مصنوعی
به نظر می رسد که خطای شما ناشی از نوع مدلی است که به ویو ارسال می کنید. این خطا معمولاً زمانی رخ می دهد که نوع مدل ارایه شده به ویو با نوع مدلی که در قالب (View) مشخص شده، مطابقت نداشته باشد.
برای حل این مشکل، مطمین شوید که:
- در دو اکشن
Dashboard
وResume
، مطمین شوید که مدل نوعRelationModels
را به درستی به ویو ارسال می کنید. - نوع مدل در ویو (Razor) دقیقاً به صورت زیر تعریف شده باشد:
@model Services.Model.RelationModels
همچنین بررسی کنید که آیا کامپوننت ها (ماژول ها) یا بخش های دیگری که در ویو استفاده می کنید، مدلی از نوع دیگری را انتظار دارند یا خیر. اگر این چنین مواردی وجود داشته باشد، منجر به ایجاد خطاهایی مانند خطای شما می شود.
اگر بعد از چک کردن موارد فوق هنوز با مشکل مواجه هستید، حتماً نوع مدل هایی که به ویو ارسال می کنید و نوع تعاریف سازنده های هریک از مدل ها را بررسی کنید.
خطایی که شما دارید به صورت کامل این هست
The model item passed into the dictionary is of type .. but this dictionary requires a model item of type
کدهایی که شما قرار دادید کامل نیست. در واقع شما در کلاس RelationModels از چندین کلاس و مدل و ViewModel دیگه استفاده کردید. از طرفی در اکشن متد Dashboard میخواید این مدل رو که خودش شامل چندین و چند مدل و ویومدل دیگه هست رو مقدار دهی کنید.
خب در اکشن Dashboard شما مدل ورودی یا همون پارامتر رو RelationModels که خودش شامل چندین کلاس و مدل هست تعریف کردید. اما در بدنه اکشن گفتید model.CardViewModel یعنی فقط به یکی از مدلهای درونی این کلاس که از نوع IEnumerable هم هست خواستید مقدار بدید.
خب چند تا حالت این جا پیش میاد :
اول اینکه بنظرم ایجاد یک مدل مثل RelationModels که شامل این همه کلاس و ویو و مدل باشه صحیح نیست. شاید به نظر میاد که جمع و جورتر کدنویسی کردید، اما مدیریت خطا خیلی سختتر میشه اینجوری.
دوم اینکه در RelationModels پراپرتی CardViewModel از نوع لیستی هست (IEnumerable). خب آیا مطمئن هستید که متد GetCard هم یک لیست رو داره برمی گردونه ؟
پیشنهاد :
برای اینکه کارتون ساده تر بشه و همچنین وقتی میخواید سوال بپرسید بتونید راحتتر سوال رو بپرسید و کسی که میخواد پاسخ بده هم راحتتر باشه بنظرم مدلهایی مثل RelationModels رو ایجاد نکنید چون این مدل شامل چندین کلاس و ... هست و بررسی رو سخت میکنه.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- کار با CkEditor با قابلیت آپلود عکس
- خطا در ایجاد migration در Asp.net core
- تفاوت های Asp.net core و Asp.net mvc چیه؟
- دلیل اسپم شدن ایمیل های ارسالی از سرور
- نحوه لایه بندی پروژه Core و اضافه کردن به IIS
- ارسال ایمیل در Asp.net core
- آیا میشه در mvc core از کامپونت استفاده کرد
- آپلود فایل در Asp.net core چگونه است؟
- حذف کامل یک رکورد در جدول ریلیشن شده
- اشکال در آپلود فایل ویدیو در mvc core 2