RenderPartial,模型作为参数
我得到一个类型错误,但我不明白为什么,我有一个View,一个ViewModel,一个PartialView和一个Model。
视图礼物将giftViewModel作为模型。 giftViewModel包含Model LoginModel(登录)的实例。
partialView LoginPopUp将LoginModel作为模型。 我尝试在礼物视图中渲染partialView LoginPopUp,将其作为模型传递给我。
我收到这个错误:
The model item passed into the dictionary is of type 'GiftViewModel', but this dictionary requires a model item of type 'LoginModel'.
这是代码:
GiftViewModel.cs
public class GiftViewModel { public LoginModel login { get; set; } [...] }
礼品/ Index.cshtml
@model GiftViewModel @section content{ @{Html.RenderPartial("LoginPopUp", Model.login);} }
LoginPupUp.cshtml
@model LoginModel [...]
我真的不明白我错在哪里
您应该检查行中是否有Model.login != null
@{Html.RenderPartial("LoginPopUp", Model.login);}
如果它相等,框架将从父视图传递模型到LoginPopUp
,这是GiftViewModel
类型。 这就是您收到此错误的原因,因为部分视图需要LoginModel
类型的模型项。
所以要么在之前初始化login
属性,比如在控制器中,或者做类似的事情
@{Html.RenderPartial("LoginPopUp", Model.login ?? new LoginModel());}