ASP.NET视图模型类型不匹配错误求助:传递CustomersViewModel却要求RandomMovieViewModel
解决MVC模型类型不匹配的问题
兄弟,这种“明明自己完全没用到某个模型,却被系统要求传它”的报错真的太闹心了!我完全懂你的崩溃,咱们一步步来排查:
- 先查视图的@model声明:这是最常见的坑!你打开对应的视图文件,看最顶部是不是写了
@model Vidly.ViewModels.RandomMovieViewModel?大概率是复制其他视图的时候没改过来,或者手滑写错了,把它改成@model Vidly.ViewModels.CustomersViewModel就好。 - 检查布局页(_Layout.cshtml):如果你的布局页里也写了
@model指定了RandomMovieViewModel,那所有用这个布局的视图都得传这个模型,哪怕你自己的视图用的是另一个。这种情况要么把布局页的@model删掉(改用ViewBag/ViewData传递布局需要的数据),要么确保所有视图都传布局要求的模型(不过更推荐前者,布局页一般不该绑定特定模型)。 - 排查部分视图(Partial View):如果你的视图里引用了某个部分视图,比如
@Html.Partial("SomePartial"),而那个部分视图的@model是RandomMovieViewModel,你调用的时候又没给它传对应的模型,它就会默认用父视图的CustomersViewModel,自然就类型不匹配了。要么给部分视图传正确的模型,要么修改部分视图的模型类型。 - 检查控制器的返回语句:有没有不小心写错视图名称?比如本来想返回当前视图,结果写成了
return View("RandomMovie", customersViewModel);,这样系统会去找名为RandomMovie的视图,而那个视图用的是RandomMovieViewModel,自然就报错了。正确的应该是return View(customersViewModel);或者指定正确的视图名。
如果上面这些都排查过还是没解决,你可以再仔细看看代码里有没有隐藏的引用——比如某个自定义的HtmlHelper扩展方法,或者视图里的某个组件,偷偷用到了RandomMovieViewModel。
内容的提问来源于stack exchange,提问作者Dongwei Shi
相关产品推荐
相关产品推荐

