2014-01-20 3 views
3

Я получаю ошибку типа, но я не понимаю, почему у меня есть View, ViewModel, PartialView и Model.RenderPartial, модель как аргумент

У этого подарка есть giftViewModel как модель. giftViewModel содержит экземпляр модели LoginModel (логин).

Частичный вид 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 
[...] 

Я действительно не понимаю, где я не прав ...

+1

Убедитесь, что 'Model.login! = Null' в' @ {Html.RenderPartial ("LoginPopUp" , Model.login);} '. – Zabavsky

+0

Спасибо, что это был случай! Для моей защиты сообщение об ошибке было очень озадачивающим. – Cactus

ответ

2

Вы должны проверить, является ли Model.login != null в строке

@{Html.RenderPartial("LoginPopUp", Model.login);} 

В случае равно, структура будет проходить модель сформируйте родительский вид на LoginPopUp, который является типом GiftViewModel. Вот почему вы получаете эту ошибку, потому что для частичного представления требуется элемент модели типа LoginModel.

Так как инициализировать login свойство до этого, скажем, в контроллере, или сделать что-то вроде

@{Html.RenderPartial("LoginPopUp", Model.login ?? new LoginModel());} 
+0

Обычно я инициализирую такие «под» модели в конструкторе модели, чтобы избежать таких ошибок и 'NullReferenceException'. –

Смежные вопросы