渲染方,模型作为参数



我有一个类型错误,但我不明白为什么,我有一个视图,viewModel,partialview和一个模型。

视图礼品以giftViewModel为型号。GiftViewModel包含模型LoginModel(登录)的实例。

部分视图LoginPopup以loginmodel为模型。我尝试在礼品视图中渲染partialview登录,将其作为型号传递。

我得到了这个错误:

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

最新更新