2013-05-14 52 views
5

我想将局部视图中的子对象传递给另一个,我总是得到错误。任何人都可以帮我解决这个问题吗? TT传递子对象问题的嵌套局部视图问题

“传递到字典的模型产品类型‘Application.Models.PetModel’,但这部词典需要类型‘Application.Models.Calendar’的典范项目”

主要型号

public class PetModel 
{ 

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

} 

子模型

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

    } 

主视图

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

PetDetailsContent管窥

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

日历局部视图

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

回答

0

PetModel不包含 “PetName”

PetDetailsContent局部视图

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

这是我的打字错误,我纠正了它,主要问题是将子模型传递给嵌套的局部视图。 – user2376512 2013-05-14 22:03:04

1

改变这一状况,

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

你有型日历的DOB财产在你的PetModel模型。

+0

这是我的打字错误,我纠正了它,主要问题在于将子模型传递给嵌套的局部视图。 – user2376512 2013-05-14 22:02:27

4

我有同样的问题。在我的情况下,只要子模型为null,框架就会将主模型传递给局部视图。

作为一种解决方法,我会在将子模型传递给部分视图之前检查子模型是否为空。如果它为空,那么我要么根本不显示局部视图,要么创建子模型的一个实例。 (再次,它的解决方法,直到我找到适当的解决方案,如果有的话)。

1

你可以尝试使用@Html.Partial("UserControl/Calendar", Model.DOB)而不是RenderPartial。我知道在某些情况下,RenderPartial不允许值正确回传。