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());}