2013-05-14 10 views
5

Sto provando a passare l'oggetto secondario in una vista parziale a un'altra e ottengo sempre l'errore. Qualcuno può aiutarmi a risolvere questo? TTNidificato Visualizzazione parziale passare il problema con l'oggetto secondario

"La voce del modello passato nel dizionario è di tipo 'Application.Models.PetModel', ma questo dizionario richiede un elemento del modello di tipo 'Application.Models.Calendar'"

modello principale

public class PetModel 
{ 

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

} 

Sub Modello

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

    } 

Vista principale

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

PetDetailsContent Vista parziale

@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) 

Calendario Vista parziale

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

risposta

0

PetModel non contiene "Petname"

PetDetailsContent Vista Parziale

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

È il mio errore di battitura, l'ho corretto, il problema principale è passare il modello secondario alla vista parziale nidificata. – user2376512

1

modificare questa impostazione,

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

avete DOB proprietà di tipo calendario nel modello PetModel.

+0

È il mio errore di battitura, l'ho corretto, il problema principale è passare il modello secondario alla vista parziale nidificata. – user2376512

4

Ho lo stesso problema. Nel mio caso ogni volta che il sottomodello è nullo, il framework passa il modello principale alla vista parziale.

Come soluzione temporanea, controllo se il sottomodello è nullo prima di passarlo alla vista parziale. Se è nullo, non mostro affatto la vista parziale o creo un'istanza del sottomodello. (Di nuovo, è una soluzione finché non trovo la soluzione adeguata per questo problema.)

1

Si potrebbe provare a utilizzare @Html.Partial("UserControl/Calendar", Model.DOB) anziché RenderPartial. So che in alcuni casi, RenderPartial non consente il passaggio corretto dei valori.

Problemi correlati