2013-05-14 14 views
5

Próbuję przekazać obiekt podrzędny w częściowym widoku do innego i zawsze otrzymuję błąd. Czy ktoś może mi pomóc rozwiązać ten problem? TTZagnieżdżony widok częściowy przekazujący obiekt podrzędny

„Przekazany do słownika poz model typu«Application.Models.PetModel», ale ten słownik wymaga elementu modelu typu«Application.Models.Calendar»”

główna modelu

public class PetModel 
{ 

    public string Name { get; set; } 
    public long SpeciesID { get; set; } 
    public long BreedID { get; set; } 
    public Calendar DOB { get; set; } 

} 

Sub model

public class Calendar 
    { 
     public int Day { get; set; } 
     public int Month { get; set; } 
     public int Year { get; set; } 

     public DateTime DateObj 
     { 
      get 
      { 
       if (Day != 0 && Month != 0 && Year != 0) 
       { 
        return new DateTime(Year, Month, Day); 
       } 

       return DateTime.Now; 
      } 

      set 
      { 
       if (value != null) 
       { 
        Day = value.Day; 
        Month = value.Month; 
        Year = value.Year; 
       } 
      } 
     } 

    } 

Widok główny

@model Application.Models.PetModel 
@using (Html.BeginForm("CatchPetContent", "Quote",Model)) 
{ 
    @Html.Partial("PetDetailsContent", Model) 
    <input type="submit" value="submit" /> 
} 

PetDetailsContent Częściowy widok

@model Application.Models.PetModel 
@Html.TextBoxFor(x => x.Name) 
@Html.DropDownListFor(x => x.SpeciesID, (IEnumerable<SelectListItem>)ViewData["TypeList"], "--Please Select--") 
@Html.DropDownListFor(x => x.BreedID, (IEnumerable<SelectListItem>)ViewData["BreedList"], "--Please Select--") 
@Html.RenderPartial("UserControl/Calendar", Model.DOB) 

Kalendarz Częściowy widok

@model Application.Models.Calendar 
@Html.TextBoxFor(x => x.Day) 
@Html.TextBoxFor(x => x.Month) 
@Html.TextBoxFor(x => x.Year) 

Odpowiedz

0

PetModel nie zawiera "petname"

PetDetailsContent Częściowy widok

@Html.TextBoxFor(x => x.PetName) 
+0

To jest mój błąd w pisaniu, poprawiłem go, głównym problemem jest przejście do podrzędnego modelu do zagnieżdżonego widoku częściowego. – user2376512

1

zmienić,

@Html.RenderPartial("UserControl/Calendar", Model.DOB) 

masz nieruchomość DOB typu kalendarzowego, w modelu PetModel.

+0

To jest mój błąd w pisaniu, poprawiłem go, głównym problemem jest przejście do podrzędnego modelu do zagnieżdżonego widoku częściowego. – user2376512

4

Mam ten sam problem. W moim przypadku, gdy podmodel ma wartość NULL, framework przekazuje model główny do widoku częściowego.

Jako obejście sprawdzam, czy podmodel ma wartość zerową przed przekazaniem go do widoku częściowego. Jeśli jego wartość zerowa to albo nie pokazuję w ogóle widoku częściowego, albo utworzę instancję pod-modelu. (Ponownie, jest to obejście dopóki nie znajdę właściwego rozwiązania tego problemu. Jeśli jest jedna.)

1

Mógłbyś spróbować użyć @Html.Partial("UserControl/Calendar", Model.DOB) zamiast renderPartial. W niektórych przypadkach RenderPartial nie pozwala na prawidłowe przekazywanie wartości.

Powiązane problemy